0x4*_*672 11 capybara rspec2 ruby-on-rails-3
水豚让我很困惑.如果我将Capybara与Ruby on Rails 3和RSpec 2结合使用,那么在RSpec请求测试中,以下匹配器可以工作:
response.body.should have_selector "div.some_class"
Run Code Online (Sandbox Code Playgroud)
响应对象具有类ActionDispatch::TestResponse.但是以下应该正式运行的行不起作用:
page.should have_selector "div.some_class"
Run Code Online (Sandbox Code Playgroud)
页面对象具有类Capybara::Session.在哪些情况下,您必须使用该response.body对象,何时必须使用page对象?
jro*_*ind 18
所以我遇到了类似的问题,这就是我认为发生了什么:
这取决于您未在此处访问该页面的代码.我正在写一个rspec请求规范.
如果我使用rspec自己检索页面:
get '/some/path'
Run Code Online (Sandbox Code Playgroud)
然后response.body.should have_selector就像你说的那样工作,但是page.should却没有.
要使Capybara'page'工作(并使capybara交互如click_button或fill_in工作),而不是使用rspec的'get'进行检索,您需要使用Capybara的'visit'进行检索:
visit '/some/path'
page.should have_selector("works")
Run Code Online (Sandbox Code Playgroud)
'page',一种水豚方法,只有在使用'visit',一种水豚方法时才会被设置.
这确实令人困惑,轨道测试中涉及的不同库的所有混合和匹配.
| 归档时间: |
|
| 查看次数: |
3057 次 |
| 最近记录: |