6

在使用 capybara 和 selenium 在 rails 中运行集成测试时,如果引发异常,则会显示一个空白页,而不是通常的带有堆栈跟踪的异常屏幕。有没有办法让 capybara 显示堆栈跟踪页面?

4

3 回答 3

5

我无法使用 Webrick 或 Thin 显示堆栈跟踪,但我最终的解决方法是使用 Mongrel,它将堆栈跟踪正确打印到 stderr。

使用 capybara 0.4.1.2 或更高版本,您可以将 capybara 配置为使用 mongrel,如下所示:

Capybara.server do |app, port|
  require 'rack/handler/mongrel'
  Rack::Handler::Mongrel.run(app, :Port => port)
end
于 2011-03-27T17:57:33.187 回答
5

马特的解决方案对我不起作用,但正是这个要点https://gist.github.com/1443408 做到了。

https://github.com/thoughtbot/capybara-webkit/issues/226更详细地解释了它发生的原因,并解释了给定 gist 的作用。

于 2012-06-01T07:57:09.143 回答
-2

这很可能是因为堆栈跟踪仅在开发执行模式(或“环境”)中显示,并且您的集成测试在生产环境中运行。

当然,通过调整生产模式设置,您也许可以让它显示异常。但这不是正确的方法。最好的方法是:

  • 在文件或日志服务器(hoptoad?)中记录异常和堆栈跟踪,用户看不到它,但您可以
  • 捕获异常并呈现错误页面

希望这可以帮助。最好的祝福。

于 2011-03-08T15:53:27.157 回答