2013-02-04 21 views
6

Omniauth(twitter)のログイン、フォームの記入、データのバリデーションなど、Rspecのカピバラ統合と単体テストの作成を完了しました。別のコントローラまたは機能テストを書く必要があります。あなたの要求(統合)スペックはあなたがカバーされているすべてのコードパスを行使された場合 Rails rspecコントローラのテストとインテグレーションのテスト

があなたの入力し、など個人的に

答えて

6

さらに測定値へのリンクをお願い申し上げ、私は思います。 Ryan Batesは、彼がここでテストする方法について素晴らしいRailscastを持っています:http://railscasts.com/episodes/275-how-i-test?autoplay=trueと約5:05で彼は同様の事を言います。あなたのように、私はコントローラ仕様ではなく統合テストを書くのが好きです。ほとんどの時間コントローラーは、とにかくフロントCRUDタイプの操作になります(特に、コントローラーからドメインロジックを守ることに注意する場合は特にそうです)。だから、あなたがテストしているのはすべて足場です。

+0

入力いただきありがとうございます。 – user937531

10

私はおそらくこの意見で少数派であることを知っているので、私はここで悪魔の主唱者を演奏します:私は実際には非常に徹底的なコントローラテストを行うことを好みます。いくつかの理由があります:

1)コントローラレベルで統合テストレベルよりもすべてのパスと結果を体系的にテストする方が簡単です。私の統合テストは、主に単なる幸せなパスであり、より一般的なエラーのパスです。

2)多くの潜在的なセキュリティ問題がコントローラレベルで発生します。徹底的なテストは、悪意のあるものが私のモデルロジックを通過できないようにするのに役立ちます。

3)これは主観的ですが、実際に私のアプリケーションが通過するかもしれない長い尾のパスのいくつかについて考えるようになります。誰かが無効なパスワードリセットトークンをURLに入れようとするとどうなりますか?コントローラのテストでは、すべてのオプションを考慮しています。

4)統合テストとは異なり、テストはかなり簡単です。それぞれのアクションは単なるルビーメソッドです!

関連する問題