Ruby 如何在Capybara feature Rails规范中强制一个值?

Ruby 如何在Capybara feature Rails规范中强制一个值?,ruby,rspec,capybara,Ruby,Rspec,Capybara,我有以下资料: 规格/功能/客户端逻辑.rb it "says unavailable slots" do expect(page).to have_content("No more client slots available.") end 这会失败,因为在前面的let中,有一个Plan是使用max\u客户机创建的,该客户机使用100。是否有一种方法可以在任何给定时间强制此功能的模型返回特定值 我认为以下方法可行: it "says unavailable slots" do Pla

我有以下资料:

规格/功能/客户端逻辑.rb

it "says unavailable slots" do
  expect(page).to have_content("No more client slots available.")
end
这会失败,因为在前面的
let
中,有一个
Plan
是使用
max\u客户机创建的,该客户机使用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

但这不起作用。

我认为您的存根设置正确,但看起来它是在您正在测试的页面呈现后设置的

我不确定您的测试是如何组织的,但您可以通过创建新的上下文/功能并在其中重新定义
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

没错,就是这样。谢谢