1

我的网站有几十个“link_to”实例。我决定将它们中的大多数更改为“button_to”以获得更好的外观。我用来检查这些链接是否存在的测试行不再有用了。

assert_select "a", :href => user_path(@seminar.teacher), text: "Your Teacher Profile", count: 2

测试无法正常工作

assert_select "button", etc...

有没有办法调整测试以找到 button_to 实例?从我最初的搜索来看,似乎没有。

我也在考虑简单地从测试中删除这些行,因为我在另一篇文章中读到,简单地测试显示项目的存在并不是使用 rails 测试的非常有用的方法。

提前感谢您的任何见解!

4

2 回答 2

1

这是使用 Rails 的默认测试框架 MiniTest 测试 button_to 是否存在的一种方法。在此示例中,会员的显示页面上有一个按钮,可将其会员状态更改为非活动状态:

<%= button_to 'Change status to Inactive', membership_path(@membership), method: :patch, 
    params: { 'membership[status]' => 'Inactive'} %>

如果您在网络浏览器中检查您的视图以查看 HTML(在 Chrome 中,右键单击按钮元素然后选择检查),您将看到 button_to 实际上是一个表单。因此,您可以测试是否存在具有等于特定成员路径的 action 属性的表单元素。

membership = Membership.first
assert_select 'form[action=?]', membership_path(membership.id)

如果您还想测试按钮的文本是否存在,请执行块

membership = Membership.first
assert_select 'form[action=?]', membership_path(membership.id) do
  assert_select 'input[value=?]', 'Change status to Inactive'
end
于 2017-09-25T04:34:18.163 回答
0

我会删除那些仅测试链接是否存在的测试。最好编写单击这些按钮的测试并测试单击按钮后会发生什么。用户更关心单击按钮时会发生什么,而不是页面上是否存在按钮。

于 2016-08-27T15:30:39.530 回答