如何在Capybara功能Rails规范中强制一个值?

时间:2013-06-19 07:22:55

标签: ruby rspec capybara

我有以下内容:

规格/特征/ client_logic.rb

it "says unavailable slots" do
  expect(page).to have_content("No more client slots available.")
end

哪个失败,因为在之前的let中,Plan创建了max_clients,其中有{100}。有没有办法在任何给定时间强制模型的特定返回值功能?

我认为以下内容可行:

it "says unavailable slots" do
  Plan.any_instance.stub(:client_slots).and_return(0)
  expect(page).to have_content("No more client slots available.")
end

但这没效果。

1 个答案:

答案 0 :(得分:1)

我认为您的存根设置正确,但看起来它正在您正在测试的页面被渲染后进行设置。

我不确定您的测试是如何构建的,但您可以通过创建新的上下文/功能并重新定义其中的let来解决问题,例如:

describe '...' do
  let(:plan) { ... }
  before do
    visit '...'
  end

  context 'without any client slots' do
    let(:plan) { ... }

    it "says unavailable slots" do
      expect(page).to have_content("No more client slots available.")
    end
  end
end