簡體   English   中英

使用Rails 4和Rspec 3.4對存根進行控制器測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM