【问题标题】:minitest assert_select with capybara click_linkminitest assert_select 与 capybara click_link
【发布时间】:2017-02-21 17:43:18
【问题描述】:

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

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

我正在使用 minitest、capybara 和 'minitest-rails-capybara' gem。我在集成测试中添加了以下包含语句:

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 的 assert 链接和 capybara 的 click_link 吗?

谢谢

【问题讨论】:

  • 是的,它们可以很好地协同工作。给出此错误的215 是哪一行?
  • assert_select "a", "show/hide cmets" 我还注意到错误消息之前的一些内容:未使用的参数传递给 Capybara::Queries::SelectorQuery : ["show/hide cmets"] 也许它认为这是水豚命令而不是 minitest
  • 嗯,我从来没有真正用过这种方式。我所做的是将水豚与例如assert page.has_link? 'show/hide comments'
  • @Iceman 使用 minitest-capybara gem(由包含 Capybara::Assertions 标识)时,可以将断言写为 assert_link 'show/hide comments',这与您的用法相同,但错误消息更好。

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


【解决方案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、名称或标签文本。所以我猜这实际上不是您要调用的方法。

【讨论】:

  • 好的,我想这是一个错误,谢谢。至于 assert_select 根据这里的示例 apidock.com/rails/ActionController/Assertions/… ,您可以传递两个字符串 ex:assert_select "title", "Welcome"
  • 我正在使用 assert_select,因为 click_link('show/hide cmets') 返回 false,我想调试,但正如你所说,这是多余的。
  • @Ayrad 那是 ActionController 断言——不是你正在使用的 minitest-capybara,它包含 Capybara::Assertions - github.com/wojtekmach/minitest-capybara/blob/master/lib/… - 它采用与 Capybaras has_select? 相同的参数
  • @Ayrad 不要忘记接受答案(复选标记),因此如果您了解您现在遇到的问题,您的问题将被标记为已回答。
【解决方案2】:

为了澄清之前的答案:

错误:

assert_select "a", "show/hide comments"

正确:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多