0

先日、アプリの機能テストの1つを実行したときに、コードにバグが発生し、が発生していましたRoutingError。私の機能テストはページをロードしていて、そのページに有効なルートがないページへのリンクを作成していました。ただし、例外の具体的な原因は重要ではありません。問題は、この例外がテストに戻されなかったことです。例外が発生したことを私が知っている唯一の理由は、test.logファイルで例外に気付いたためです。要するに、テストは合格しましたが、それは失敗としてカウントされるべきだと思います!

これは私を混乱させました。テストコードをブロックに入れてみましたassert_nothing_raisedが、それでも合格しました。

さらに掘り下げてみると、アプリによってスローされた例外はすべてサイレントにログに記録されており、テストが失敗することはないことがわかりました。これはRailsでの意図的な動作ですか、それとも何かが間違って設定されているように聞こえますか?

編集:問題は、Railsが例外をキャッチして処理することである可能性があると思います(ブラウザーから要求が送信されたときに、おなじみのスタックトレースページを表示できるようにするため)。なぜこれがdevelopment環境で役立つのかはわかりますが、確かに環境ではそうではありませんtest...?

4

1 に答える 1

0

機能テストで各アクションの応答を明示的にチェックする必要があります。代わりに、次のようなことを試してください。

get:index assert_response:success

応答には常に何らかの形のアサーションが必要です。アクションがリダイレクトすることになっている場合は、assert_redicted_toを使用します

于 2010-10-07T02:35:05.257 に答える