Ruby 如何在Capybara feature Rails规范中强制一个值?
我有以下资料: 规格/功能/客户端逻辑.rbRuby 如何在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
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
没错,就是这样。谢谢