使用Rails 4和Rspec 3.4

时间:2016-06-28 21:13:53

标签: ruby-on-rails ruby rspec

在我的控制器中,我有以下方法:

  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,我认为存根在这里效果最好。在代码库中,slugs对应于文件夹,因此我不想在此控制器类中测试其他类。我会为我的lib类测试保存它。

问题

如何存根IntegrationsProvider类以便它返回Provider模型?

1 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

private