minitest assert_select with capybara click_link

时间:2017-02-21 17:43:18

标签: ruby-on-rails capybara integration-testing minitest

如何检查链接的存在然后点击它?我尝试了以下方法:

  assert_select "a", "show/hide comments"
  click_link('show/hide comments')

我正在使用minitest,capybara和'minitest-rails-capybara'宝石。我在集成测试中添加了以下include语句:

include Capybara::DSL
include Capybara::Assertions

我收到以下错误:

Unused parameters passed to Capybara::Queries::SelectorQuery : ["show/hide comments"]  
MethodError:         NoMethodError: undefined method `failure_message' for Capybara::Helpers:Module
            test/integration/user_flow_test.rb:215:in `block in <class:UserFlowTest>'

我可以同时使用minitest的断言链接和capybara的click_link吗?

由于

2 个答案:

答案 0 :(得分:1)

首先,在点击之前不需要断言元素的存在,因为click_link将等待Capybara.default_max_wait_time秒,链接显示在页面上然后单击它。如果该链接在该时间内没有出现,则会引发错误,因此对其存在进行断言是多余的。

你得到的错误是因为minitest-capybara与Capybara 2.9+兼容 - https://github.com/wojtekmach/minitest-capybara/pull/17 - 以及assert_select没有2个字符串的事实作为参数。它只需要选择元素的id,name或label文本。所以我猜这并不是你打算打电话的方法。

答案 1 :(得分:0)

要弄清以前的答案:

错误:

assert_select "a", "show/hide comments"

正确:

assert_select "a", text: "show/hide comments"