Cucumber和Capybara测试失败,我该如何调试?

时间:2011-08-14 03:46:30

标签: cucumber ruby-on-rails-3.1

我对Capybara和Cucumber进行测试是全新的。我看到了一些非常有用的视频,并写了我的第一个测试。但是,所说的测试失败了,我不知道为什么。

我相信我拥有所需的所有宝石,而且我有理由相信所有的配置都是根据文档完成的。

但是,当我运行该功能时,它会因缺少内容而失败,但我知道内容在正确的视图中,并且我知道视图正在正确提供。我可以手动导航,它看起来应该如此,但黄瓜/水豚步骤说它找不到内容。

对于我的步骤定义,我有:

When I visit the homepage
  get root_path
  response.should have_content("Log In")
end

在应用程序布局中,我有“登录”字样,显示用户何时未登录。

当该功能运行时,我收到失败消息:

expected there to be content "Log In" in ""

有没有办法看看测试中的响应所呈现的html是什么?我试过做一个put(响应)但是没有做任何事情。任何其他原因可能是我没有考虑失败?

3 个答案:

答案 0 :(得分:4)

除了save_and_open_page函数之外,我发现我更喜欢使用launchy gem。它似乎更像是黄瓜。

如果您添加到Gemfile

gem 'launchy'

然后运行

bundle install

你可以简单地在你的黄瓜测试中写道:

When ...
Then show me the page
Then I should see ...

然后显示页面也会启动浏览器。我没有检查过,但我猜它只是坐在save_and_open_page函数的顶部,但同样,对我来说感觉更好。

答案 1 :(得分:3)

答案 2 :(得分:1)

您必须使用visit而不是get。此外,最好分割步骤并使用标准步骤When I go to <page_name>(参见web_steps.rb和paths.rb)

我建议你看看rubygems.org项目 - 它有很多很酷的功能,你可以用它作为例子。