新手问题 cucumber step 中获取返回页面信息的方法。

redemption · 2014年10月12日 · 最后由 redemption 回复于 2014年10月13日 · 2509 次阅读

我刚使用 cucumber,现在我遇到的问题是: 在我提交一个表单之后,程序会跳转到一个页面去,我要用 cucumber 去检测返回页面的内容。 我看书或者网上查到的都是

response.should contain("XX")

我现在用的是最新版本的 cucumber 和 rspec。已经不支持 contain 这个方法了。好像是用 include 代替。于是我把代码改成

expect(response).to include("xx")

问题是 response 从返回的结果中显示其值是 nil,不是返回的页面。求帮忙解惑。

没有人回答我吗?是描述不够清楚?还是啥。。。

虽然没有没回复我,不过还是感谢大家。我已经自己把问题解决了。 我在 stackoverflow 上找到一个类似的问题http://stackoverflow.com/questions/8520655/undefined-webrat-methods-in-cucumber/8527309#8527309 首先是说 cucumber 不支持 webrat 了,转而支持 capybara(可以在 bundle install 时看到会自动 install capybara 这个 gem),所以 contain 这个方法不能使用。要使用 capybara 的 have_content 这个方法。 另外 response 这个变量表示的也不是返回的页面,当我使用

expect(response).to have_content("xx")

这个方法时,response 返回的是空字符。 通过查看 capybara 的文档,获取页面使用的是 page 这个变量,这个变量的类型是 Capybara::Session 类型。 由于使用 response 时,里面是空字符,没有任何内容,也就不会是用来获得 response header 中内容的变量,所以我猜想这里的 response 只是一个 ruby 的局部变量,没有任何意义。

再说一下这里为什么不能 include。这是因为 Capybara::Session 没有提供 include 这个方法。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号