Rspecの 機能仕様 と 要求仕様 の概念的な違いは何ですか?
機能仕様ドキュメントから:
機能仕様は、アプリケーションを通じて機能のスライスを実行するための高レベルのテストです。通常はWebページである外部インターフェイスを介してのみアプリケーションを駆動する必要があります。
また、リクエスト仕様の場合:
リクエスト仕様は、Railsの統合テストの薄いラッパーを提供し、ルーティング(Railsが提供)およびスタブなし(ユーザー次第)を含むフルスタック全体の動作を駆動するように設計されています。リクエスト仕様では、次のことができます。
- 単一のリクエストを指定する
- 複数のコントローラーにまたがる複数の要求を指定する
- 複数のセッションにわたって複数のリクエストを指定する
機能仕様では Capybara を使用し、要求仕様では使用しないことを知っています。しかし、それは異なる概念に値することはほとんどありません。
概念的な違いは、通常はユーザーストーリーをテストしていることであり、すべての対話はユーザーインターフェイスを介して実行する必要があります。そこで、Capybaraが登場します。リクエスト仕様は、まだアプリケーションの動作をテストしており、受け入れテストのような読みやすさを期待していません。そのため、受け入れテストの構文が改善されています。
技術的な違いには、要求仕様ラップRails統合テストがありますが、機能仕様はそうではありません。ブラウザを介してすべてのインタラクションを促進し、訪問やページに対するアサートなどのメソッドを使用する必要があります。
Githubのrspec-Railsソースコードのfeature_spec.featureを読むことをお勧めします。これがお役に立てば幸いです。