6

テストにWebkitでCapybaraを使用していますが、何らかの理由でテストが失敗するとエラーが表示されますが、コード内で実際に発生した場所は表示されません。

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すると、エラーが発生した場所に関する情報なしで、エラーが表示されるだけです。

内部サーバーエラー

127.0.0.1:60324の#WEBrick / 1.3.1(Ruby / 1.9.3 / 2012-04-20)の未定義のメソッド `client_id'

私が期待しているのは、エラーが発生した行番号と関数です。

app / controllers / invoices_controller.rb:30:in `show '

Googleでこれに関連するものを見つけることができないようです。私はおそらく間違った命名法を使用しています。誰かがこれを修正する方法を知っていますか?

4

2 に答える 2

8

基本的に、カピバラは別のプロセスで実行されているため、アプリに関する知識はありません。https://gist.github.com/1443408で説明されているこのトリックを使用して、この問題を回避できます。

于 2013-01-09T10:22:03.857 に答える
3

問題は、エラーが原因で実際​​のページがレンダリングされず、代わりに内部サーバーエラーが発生することです。テストしているページのコンテンツもそうInternal Server Error undefined method... です。RSpec / Capybaraは、テストフレームワークがページに実際に表示されるもののみをテストするため、発生した場所を通知できません。これは、(実行時に確認したようにsave_and_open_page)正確に表示されるものです。

エラーを追跡するには、Railsエラーログ、またはエラーを実行しているコンソール/ターミナルを確認する必要があります。詳細情報がなければ、エラーを追跡するのを手伝うことはできません。

お役に立てば幸いです。

于 2013-01-06T00:19:38.377 に答える