1. ホーム
  2. ruby-on-rails

[解決済み] RSpec: 機能仕様と要求仕様の違いは何ですか?

2022-10-06 01:33:50

質問

Rspecの 機能仕様 要求仕様 ?

機能仕様のドキュメントから。

フィーチャースペックは、アプリケーションを通して機能のスライスを実行するための高レベルのテストです。 を実行するための高レベルのテストです。このテストは、アプリケーションをその外部インタフェースを通じてのみ駆動する必要があります。 外部インタフェース(通常は Web ページ)を介してのみアプリケーションを動かします。

そして要求仕様のために

<ブロッククオート

リクエスト仕様は、Railsの統合テストを薄く包むもので、ルーティングを含むフルスタックを通して動作を駆動するように設計されています。 ルーティングを含むフルスタックを通して動作を駆動するように設計されています。 (Railsによって提供される)を含むフルスタックを通して動作を駆動するように設計されています。 リクエスト仕様を使用すると、次のことができます。

  • 単一のリクエストを指定する
  • 複数のコントローラにまたがる複数のリクエストを指定する
  • 複数のセッションにまたがる複数のリクエストを指定する

私は、機能仕様が カピバラ を使い、要求仕様では使いません。しかし、それは異なる概念を意味するものではありません。

どのように解決するのか?

概念的な違いは、通常はユーザーストーリーをテストしており、すべてのインタラクションはユーザーインターフェイスを介して駆動されるべきであるということです。 そこで、Capybara の出番です。 要求仕様はまだアプリケーションの動作をテストしており、受け入れテストが持つような読みやすさの期待を持っていません。 ですから、この機能は受け入れテストのための改良された構文のためにあるのです。

技術的な違いとしては、feature specがRailsの統合テストを包んでいないのに対し、request specは包んでいることが挙げられます。つまり、リクエスト仕様では、メソッドget、post、put、deleteを使用し、レスポンスに対してアサートすることができます。 feature specでは、すべてのインタラクションをブラウザ経由で行い、visitなどのメソッドを使用し、ページに対してアサートする必要があります。

githubのrspec-railsのソースコードにあるfeature_spec.featureを読むことをお勧めします。お役に立てれば幸いです。