我有一个包含多个按钮的页面。例如:
<% Zombie.each.do |zombie| %>
<%= zombie.name %>
<%= form_for(zombie) do |f| %>
<div><%= f.hidden_field :craving, value: true %></div>
<%= f.submit t('zombie.craving') %>
<% end %>
<% end %>
我想测试
it "should increment the craving zombie count" do
expect { click_button t('zombie.craving') }.to change(Zombie.where(craving: true), :count).by(1)
end
但是如果我这样做, capybara 会检测到与僵尸一样多的模糊匹配......
我该如何规避这个问题?
最佳答案
您应该在表单中添加每个僵尸都不同的类或 ID(例如“zombie_#{id}”)。 Rails 有一个辅助方法可以为您完成此操作
<%= form_for(zombie, :html => { :id => dom_id(zombie) }) do |f| %>
然后在你的测试中你可以添加一个in
:
it "should increment the craving zombie count" do
zombie = Zombie.where(craving: true).first
within "#zombie_#{zombie.id}" do
expect { click_button t('zombie.craving') }.to change(zombie, :count).by(1)
end
end
关于ruby-on-rails - capybara 模糊匹配 - 如何选择第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215931/