0

カピバラと rspec の両方でテスト (スペック) を書いている人をよく見かけます。デフォルトでは、RSpec はすべての種類の仕様を生成しますが、実際にはこれらの仕様を無効にしています:

config.generators do |g|
  g.test_framework :rspec,
    :view_specs    => false,
    :request_specs => false,
    :routing_specs => false
  end
end

Cucumber でビューをテストしたいので、これを行っています。2 つのフレームワーク間でテストが繰り返されるのを避けるために、無効にする必要がある他の仕様があるのではないでしょうか?

ありがとう!

4

1 に答える 1

3

Cucumber と RSpec は同じことを行う 2 つのフレームワークであるため (ビヘイビア駆動開発)、両方で仕様を書いている人がいます。Cucumber は、コードに変換されるビジネスで読み取り可能な仕様ドキュメントを提供するだけですが、RSpec では、記述された it ブロックとコンテキスト ブロック内のコードにビジネス仕様が混在しています。

一般的に言えば、両方を使用している場合は、UNIT テスト機能 (モデル、コントローラー、ビュー、およびルーティングの仕様。ただし、モデルの仕様のみを実行する必要があるという強力な議論があります) に RSpec を使用するだけです。次に、Cucumber または RSpec の Request Specs のいずれかで受け入れテストを行います。両方を使用する理由はありません。

私の一般的な経験則は、技術者だけが仕様を使用している場合は RSpec を使用することです。これは、RSpec の方が使いやすいためです。製品所有者が実際に仕様を確認したい場合は Cucumber を使用します。

Request Specs と Cucumber Features はどちらも統合テストの形式です。つまり、アプリケーションの一部だけを分離するのではなく、すべての側面を使用することになります。コントローラー、ルート、ビューをテストする責任を統合テストに移すことができることは一般的に認められているため、それらが必要ないことに同意する場合は、RSpec でそれらを無効にすることができます。

私自身、私は今でも変わったコントローラ テストを書くのが好きです。通常は、追加のパラメータを付けて投稿した場合、アプリケーションがユーザーに自分自身を管理者などにさせないようにするためです。

于 2012-07-11T14:48:41.030 に答える