내 컨트롤러 스펙에서 조롱을 위해 다음 모델/스펙을 어떻게 설정합니까? 여기 RSpec을 사용하여 ActiveRecord 동적 파인더를 스터 빙
내가 몇 가지 예에 대한 사용자를 조롱 할,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
그런 다음 어떤 시점에서 장소가 지금 현재 좋아하는
@favorite = @current_user.favorites.find_by_place_id(@place.id)
입니다 있는지 확인합니다 모델입니다
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
방법을 사용하는 것입니다 the : 즐겨 찾기 스텁,하지만 운이 없다. 문제는 메서드가 예상되지 않는다는 것이지, find_by_place_id가 작동 할 수있는 무언가를 반환해야하며, 무 처리로 작동 할 수 없다는 것입니다. – RyanW@ RyanW 오른쪽, 스텁 된 '즐겨 찾기'메소드에서 null 객체를 반환 해 봅니다. 답변을 수정했습니다. –