私はレールAPIに取り組んでいます。私は現在、コントローラ用のRSpecテストを書く予定です。 私は周りを読んできましたが、コントローラスペックとリクエストスペックの実際の違いは何か、そして私がAPIをテストしている場合はどちらを使うべきかを理解できませんでした。コントローラの仕様と仕様の仕様
答えて
コントローラ仕様 - コントローラ仕様は、Rails機能テスト用のRSpecラッパーです。それはあなたがそれぞれの例では、単一のHTTPリクエストをシミュレートすることができ、その後、 期待される成果を指定
要求スペック - 要求スペックRailsの統合テストの周りに薄いラッパーを提供し、フルを通じて行動を駆動するように を設計されていますスタック(ルーティング (Railsによって提供される)を含む)とスタブなし(これはあなた次第です)。
APIコントローラをテストする場合は、単一のリクエストをテストするときにController specs
を使用することをお勧めします。アーロン・サムナー引用
古いバージョンのRailsを使用している場合、一般的に推奨されるコードスタイルはコントローラ仕様に近いようです。 Rails 5ではコントローラテストの動作が変更されました。それらは統合テストであり、もはやコントローラの内部にアクセスすることはできません。 コントローラーテストを行うことに全く問題がないかどうかは現在わかりません。要求とフィーチャの仕様は、今後の開発に推奨されるアプローチのようです。 https://everydayrails.com/2016/09/05/replace-rspec-controller-testshtml – CJBrew
httpレイヤーを使用せずにアクションを直接呼び出すだけでテストコントローラをユニット化するかどうかについては問題があります。これはお勧めですか? – Jwan622
:
RailsとRSpecのチームの両方が直接モデル(単位)のテストの 賛成で、(また、機能テスト層として知られている)あなたの アプリのコントローラテストを交換または削除を提案します、または上位レベルの 統合テストを使用します。
新しいAPIの場合、私は要求仕様を使用し、コントローラテストを使用するよりも私の "エンドポイント"(モデルとビジネスロジックとも呼ばれます)をヒットすることを好みます。
確かに、Rspecチームは公式にコントローラーの仕様を今すぐ避けています。新しいRailsのアプリの
http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/
:私たちはあなたのアプリケーションに レールコントローラテストの宝石を追加することはお勧めしません。公式の のRailsチームとRSpecコアチームの推奨は、代わりに 要求仕様書を書くことです。要求仕様では、コントローラの動作を1つの コントローラに集中させることができますが、コントローラのテストとは異なり、ルータ、 ミドルウェアスタック、およびラックの要求と応答の両方が含まれます。これにより、書いているテストに 現実感が追加され、コントローラの仕様に共通する多くの 問題を回避できます。 Rails 5の要求仕様 は、レール CommitterチームのEileen Uchitelle1による作業のおかげで、要求仕様またはコントローラ仕様のいずれよりもかなり速く、 のレール4でした。
- 1. Cocoapod仕様とサブ仕様別フレーム
- 2. htmlの仕様
- 3. リアルタイムJava仕様
- 4. MVC仕様
- 5. ADT仕様
- 6. UIActionSheet UI仕様
- 7. ジャスミン仕様
- 8. PHP ws- *仕様
- 9. インポート仕様vba
- 10. アセンブリパブリッシャー仕様
- 11. ブレークパッドミニダンプ仕様?
- 12. WordPress WXR仕様
- 13. HTTPアーカイブ仕様
- 14. C#仕様パターンアグレゲートチェッカー
- 15. OSGi仕様とJSR
- 16. BDD、仕様、および "仕様レポート" xUnit.NETと?
- 17. 製品仕様と仕様を比較できる製品
- 18. Erlangのタイプ仕様
- 19. 仕様パターンの例
- 20. .gemrcファイルの仕様
- 21. リポジトリの仕様パターン?
- 22. テスト仕様を別のテスト仕様に渡す
- 23. Java言語仕様:Javaの8仕様でJava ConditionalExpressionでLambdaExpression
- 24. Clojureの仕様とレコードコンストラクタ
- 25. AzureワーカーロールVM仕様
- 26. Ogg Vorbisヘッダー仕様
- 27. 計算列仕様
- 28. JavaScript形式仕様
- 29. GWT Autobean JSON仕様
- 30. Java2Dグラフィックス仕様:ラスタライズ
私があなただったら、コントローラの仕様に要求/統合仕様を賛成できません。 –