2

バージョン 1.2.6 の rspec-rails を使用しています。コントローラーのテストで

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

すべての例から、コントローラー変数へのアクセスは機能するはずですが、機能しません。何を与える?テスト対象のコントローラーでメソッドをモックまたはスタブするにはどうすればよいですか?

4

4 に答える 4

3

コントローラーではなく @controller を使用してみてください

于 2009-05-27T16:53:34.047 に答える
2

問題を修正する前にブロックの :all を削除します。理由はわかりませんが。

before do
...
end

必要なものです。

于 2009-06-12T02:19:16.390 に答える
1

ブロックで必要controllerな場合は、 を呼び出します。before(:all)setup_controller_request_and_response

于 2012-01-02T04:34:04.497 に答える
0

PS: この動作は、RSpec の最近のバージョンで修正する必要があります。

RSpec v.2.14の実行例を参照してください。

require "spec_helper"

RSpec.configure {|c| c.before { expect(controller).not_to be_nil }}

describe WidgetsController do
  describe "GET index" do
    it "doesn't matter" do
    end
  end
end
于 2013-09-17T05:50:25.323 に答える