为什么RSpec / Capybara没有显示错误发生的位置

时间:2013-01-05 23:54:58

标签: ruby-on-rails rspec capybara capybara-webkit

我使用Capybara和webkit进行测试,但出于某种原因,当测试失败时,它会显示错误,但不会显示错误。

Failures:

  1) online shopping -  sign up
     Failure/Error: page.should have_content 'Payment added successfully'
       expected there to be content "Payment added successfully" in "Internal Server Error undefined method `client_id' for #<InvoicePayment:0x007fbd5b834008> WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) at 127.0.0.1:60324"
     # ./spec/requests/online_shopping_spec.rb:140:in `block (2 levels) in <top (required)>'

当使用save_and_open_page时,它只显示错误,但没有关于它出现位置的信息:

  

内部服务器错误

     

未定义的方法`client_id&#39;为#   WEBrick / 1.3.1(Ruby / 1.9.3 / 2012-04-20)at 127.0.0.1:60324

我期待看到的是发生错误的行号和功能:

  

app / controllers / invoices_controller.rb:30:在`show&#39;

我似乎无法在Google上找到与此相关的任何内容。我可能使用了不正确的命名法。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

基本上,水豚没有关于应用程序的知识,因为它在不同的过程中运行。您可以使用此处描述的技巧https://gist.github.com/1443408

来解决此问题

答案 1 :(得分:3)

问题是由于错误导致实际页面无法呈现,而是出现内部服务器错误。因此Internal Server Error undefined method... 是您正在测试的网页的内容。 RSpec / Capybara无法告诉您它出现在何处,因为测试框架只测试您在页面上看到的内容,这正是您所看到的(正如您在运行save_and_open_page时所确认的那样)。

要追踪错误,您应该查看rails错误日志或运行它的控制台/终端。没有更多信息,我无法帮助您追踪错误。

希望有所帮助。