水豚把我搞糊涂了。如果我将Capybara与Ruby on Rails 3和RSpec 2结合使用,那么在RSpec请求测试中,以下匹配器可以工作:
response.body.should have_selector "div.some_class"响应对象具有类ActionDispatch::TestResponse。但是下面这行should work officially不起作用:
page.should have_selector "div.some_class"页面对象具有类Capybara::Session。在哪些情况下必须使用response.body对象,何时必须使用page对象?
发布于 2011-09-16 03:50:39
所以我遇到了类似的情况,这就是我想发生的事情:
这取决于你在这里没有包含的访问页面的代码。我正在编写一个rspec请求规范。
如果我用rspec自己的页面检索页面:
get '/some/path'那么response.body.should have_selector可以像你说的那样工作,但page.should不能。
要使Capybara的“页面”工作(以及使像click_button或fill_in这样的Capybara交互工作),而不是使用rspec的“get”检索,您需要使用Capybara的“访问”检索:
visit '/some/path'
page.should have_selector("works")“‘page”是水豚方法,只有在使用水豚方法“a”时才会设置。
这确实让人感到困惑,因为rails测试中涉及到不同库的混合和匹配。
发布于 2011-09-01 02:54:37
当您想要使用标准的rails方法时,可以使用response。另外,当您想要使用水豚方法时,您可以使用page。在水豚中,您最有可能在给出的示例中使用have_css。
https://stackoverflow.com/questions/7260720
复制相似问题