116

Rspecの機能仕様要求仕様の概念的な違いは何ですか?

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

機能仕様は、アプリケーションを介して機能の一部を実行することを目的とした高レベルのテストです。彼らは、外部インターフェース、通常はWebページを介してのみアプリケーションを駆動する必要があります。

そして、リクエストの仕様については:

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

  • 単一のリクエストを指定する
  • 複数のコントローラー間で複数の要求を指定する
  • 複数のセッションにわたって複数のリクエストを指定する

機能仕様ではCapybaraを使用し、要求仕様では使用しないことを知っています。しかし、それはほとんど異なる概念に値しません。

4

1 に答える 1

149

概念的な違いは、通常はユーザーストーリーをテストしていることであり、すべての対話はユーザーインターフェイスを介して実行する必要があります。そこでCapybaraが登場します。リクエスト仕様はまだアプリケーションの動作をテストしており、受け入れテストのような読みやすさは期待できません。したがって、受け入れテストの構文を改善するための機能があります。

技術的な違いには、リクエスト仕様がRails統合テストをラップするのに対し、機能仕様はそうではないことが含まれます。つまり、リクエストスペックでは、メソッドget、post、put、delete、およびresponseに対してassertを使用できます。機能仕様を使用すると、ブラウザを介してすべてのインタラクションを促進し、ページにアクセスしてアサートするなどの方法を使用する必要があります。

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

于 2013-03-04T03:06:39.910 に答える