0

RSpecを使用してコントローラーをテストしようとしていますが、コントローラーの関数にデータベースが必要なため、問題が発生しています。

コントローラのコード行は次のようになります。

@myallresources = Myrsources.all

MyresourcesはActiveRecord::Baseから継承します

ただし、データベースがないため、ロードするものはなく、@ myallresourcesは空の配列であるため、テストは失敗します。rspecの実行中にデータベースに接続する方法はありますか?

私はRSpecとレールに非常に慣れていないので、どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

0

コントローラの仕様でデータベース接続を使用しないでください。

このページのデータベース分離に関するセクションを確認してくださいhttp://rspec.info/rails/writing/controllers.html

基本的に、ActiveRecordモデルはモデル仕様で個別にテストする必要があるため、モックまたはスタブする必要があります。mock_modelを使用した簡単な例を次に示します。

before do
  mocks = (1..3).map { mock_model(MyResource) }
  MyResource.should_receive(:all).and_return(mocks)
end

これを、describeを使用するアクションの定義テストが存在する同じブロック内に配置しますMyResource.all

次のリンクで、モックとスタブの適切な説明を見つけることができます。

于 2011-08-24T18:42:11.557 に答える