![](/img/trans.png)
[英]Rails/Rspec - How to stub a model method inside of a controller test?
[英]Controller test with stub using Rails 4 and Rspec 3.4
在我的控制器中,我有以下方法:
def set_provider
@provider = Provider.find_by(id: params[:id])
return @provider unless @provider.active
@provider = IntegrationProvider.new(@provider.slug).proxy_to.find_by(id: params[:id])
end
我正在嘗試使用以下測試進行覆蓋:
context 'active' do
before do
@provider = FactoryGirl.create(:provider, :active)
get :show, id: @provider.id
end
it '200' do
expect(response.status).to be(200)
end
it 'assigns @provider' do
expect(assigns(:provider)).to eq(@provider)
end
end
IntegrationProvider類基本上是Provider模型的子模型。 由於這些可以是動態的,並且我正在使用FactoryGirl,所以我認為存根在這里最有效。 在代碼庫中,這些子文件對應於文件夾,因此我不想在此控制器類中測試該其他類。 我將其保存用於我的lib類測試。
題
您將如何對IntegrationsProvider類進行存根處理,以使其返回Provider模型?
這樣的事情應該起作用:
allow(IntegrationProvider).to receive_message_chain(:new, :proxy_to, :find_by).and_return(yourproviderobjecthere)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.