3

複数のボタンがあるページがあります。例えば ​​:

<% 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

でもそうすると、カピバラはゾンビの数だけあいまいな一致を検出します...

これを回避するにはどうすればよいですか?

4

1 に答える 1

2

ゾンビごとに異なるクラスまたは ID をフォームに追加する必要があります ("zombie_#{id}" など)。Rails には、これを行うヘルパー メソッドがあります。

<%= form_for(zombie, :html => { :id => dom_id(zombie) }) do |f| %>

次に、テストで次を追加できますかwithin:

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
于 2013-06-20T14:23:18.227 に答える