以下のモデル/コントローラのスペックを模擬して設定するにはどうしたらいいですか?ここでRSpecを使ったActiveRecordダイナミックファインダーのスタブ付け
いくつかの時点で場所は、それが現在のお気に入り今
@favorite = @current_user.favorites.find_by_place_id(@place.id)
だかどうかがチェックされるモデル
class User < ActiveRecord::Base
has_many :favorites
end
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :place
end
class Place < ActiveRecord::Base
has_many :favorites, :as => :favorable
end
はその後、私はいくつかの例については、ユーザーを模擬したい
it "should be success" do
user = double("User")
user.stub(:favorites)
get :show, :id => "1081651"
response.should be_success
end
しかし、結局、
undefined method `find_by_place_id' for nil:NilClass
私はどうすればいいですか:お気に入りのものを手伝ってください。ダイナミックファインダーが使用されているので、私はそれを正しく模倣する方法がわかりません。すべての予期しないメッセージを無視します
:
もう一つの方法は、
stub_chain
メソッドを使用することです:お気に入りのスタブが、運がない。問題は、メソッドが期待されていないということではなく、find_by_place_idが操作できるものを返す必要があり、nilで操作できないということです。 – RyanW@ RyanW right、スタブされた 'お気に入り'メソッドからヌルオブジェクトを返そうとしています。答えを編集しました。 –