Здесь аналогичный подход, но немного другой ... в идеале вы бы опубликовали немного больше информации о своей спецификации и представлении, но, возможно, это поможет вам.
Возможно, ваши ссылки имеют тег-обертку.Если они не добавляют один.Если они добавляют уникальный идентификатор для каждой оболочки:
<% @user.each do |user| %>
<div id="user_<%= user.id %>">
<%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %>
</div>
<div id="user_<%= user.id %>">
<%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %>
</div>
<div id="user_<%= user.id %>">
<%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %>
</div>
<% end %>
В зависимости от того, как вы строите свои спецификации в своих тестах на капибару, вы можете сделать это:
it "clicks on a user", :js do
let(:user4) { create(:user) }
within("user_#{user4.id}") do
accept_confirm { click_link("delete") }
end
end
или что-то вроде этого:
it "clicks on a user", :js do
let(:users) { create_list(:user, 4) }
within("user_4") do
accept_confirm { click_link("delete") }
end
end
Как упоминал Томас, вам нужно включить javascript_driver
для вашего теста, добавив :js
, который будет использовать selenium
по умолчанию или другой, если вы его настроили.