2017-02-21 42 views
1

我该如何检查我的链接是否存在,然后点击它?我试过如下:minitest assert_select with capybara click_link

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

我使用MINITEST,水豚,和“MINITEST护栏,水豚”的宝石。我已经加入我的集成测试以下包含语句:

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的断言链接和水豚的click_link?

感谢

+0

是的,他们一起工作很好。给出这个错误的'215'行是什么? – Iceman

+0

assert_select“a”,“显示/隐藏评论”我也注意到错误消息之前的一些东西:未使用的参数传递给Capybara :: Queries :: SelectorQuery:[“显示/隐藏评论”]或许它认为这是一个水豚命令,而不是minitest – Ayrad

+0

嗯,我从来没有真正用过这种方式。我所做的是用水豚与例如'断言page.has_link? '显示/隐藏评论' – Iceman

回答

1

首先是没有必要点击它,因为click_link将等待Capybara.default_max_wait_time秒的链接出现在页面上,然后单击它之前元素的存在断言。如果链接没有在那个时候出现,它会引发一个错误,所以断言它的存在是多余的。

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

+0

好吧,所以我想这是一个错误谢谢。至于assert_select根据这里的例子http://apidock.com/rails/ActionController/Assertions/SelectorAssertions/assert_select,你可以传递两个字符串ex:assert_select“title”,“Welcome” – Ayrad

+0

我使用assert_select,因为click_link('显示/隐藏评论“)返回false,我想调试,但你说它是多余的。 – Ayrad

+1

@Ayrad这就是ActionController断言 - 不是minitest-capybara这就是你通过包括Capybara ::断言 - https://github.com/wojtekmach/minitest-capybara/blob/master/lib/capybara/assertions。 rb#L171 - 采用与Capybaras相同的参数'has_select?' –