私はrspec-railsバージョン1.2.6を使用しています。コントローラのテストでコントローラをテストするときにRSpecのコントローラオブジェクトにアクセスできないのはなぜですか?
describe WebsController do ...
私はスタブメソッドのためにコントローラオブジェクトにアクセスできないようです。例えば、以下は動作しません。
before :all do
@feed = mock_model(Feed)
controller.should_receive(:feed_from_params).and_return @feed
end
私は
An expectation of :feed_from_params was set on nil.
のような警告を取得し、デバッグセッションを発射スペックだけでメソッドのモックの前にラインに伝えますから、私が手次のようになります。
(rdb:1) self.respond_to? :controller
true
(rdb:1) controller
nil
すべての例から、コントローラ変数にアクセスする必要がありますが、そうではありません。何がありますか?テスト中のコントローラでメソッドをモックまたはスタブするにはどうすればよいですか?すべてのブロックは、問題を修正する前に:
理由は前ということであるブロックは、システムの起動時に_once_を実行しているのに対し、前に()(実際には前にあります(:each))ブロックは、各テストの前に実行され、外部コンテキストで定義された_after_任意のbefore(:each)ブロックで発生します。 –