首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec2和卡皮巴拉

RSpec2和卡皮巴拉
EN

Stack Overflow用户
提问于 2011-09-01 01:05:57
回答 2查看 3.1K关注 0票数 11

水豚把我搞糊涂了。如果我将Capybara与Ruby on Rails 3和RSpec 2结合使用,那么在RSpec请求测试中,以下匹配器可以工作:

代码语言:javascript
复制
response.body.should have_selector "div.some_class"

响应对象具有类ActionDispatch::TestResponse。但是下面这行should work officially不起作用:

代码语言:javascript
复制
page.should have_selector "div.some_class"

页面对象具有类Capybara::Session。在哪些情况下必须使用response.body对象,何时必须使用page对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-16 03:50:39

所以我遇到了类似的情况,这就是我想发生的事情:

这取决于你在这里没有包含的访问页面的代码。我正在编写一个rspec请求规范。

如果我用rspec自己的页面检索页面:

代码语言:javascript
复制
get '/some/path'

那么response.body.should have_selector可以像你说的那样工作,但page.should不能。

要使Capybara的“页面”工作(以及使像click_button或fill_in这样的Capybara交互工作),而不是使用rspec的“get”检索,您需要使用Capybara的“访问”检索:

代码语言:javascript
复制
visit '/some/path'
page.should have_selector("works")

“‘page”是水豚方法,只有在使用水豚方法“a”时才会设置。

这确实让人感到困惑,因为rails测试中涉及到不同库的混合和匹配。

票数 18
EN

Stack Overflow用户

发布于 2011-09-01 02:54:37

当您想要使用标准的rails方法时,可以使用response。另外,当您想要使用水豚方法时,您可以使用page。在水豚中,您最有可能在给出的示例中使用have_css

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7260720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档