8

私はしばらくshouldaを使用しており、rspecを読んで遊んでいました。詳細な比較対照は行っていません。しかし、この 2 つの間にはいくつかの重複があるように思えますが、それらは 1 対 1 の置き換えではありません。

shoulda で書かれた既存のすべてのテストを置き換えることなく、rspec で自分の Rails システムにいくつかの単体テストを書くことを検討しています。感覚をつかむ方法として。

これは良い考えですか?徐々に移行できますか、それともトラブルを求めていますか?

考慮すべき明確な利点はありますか?

ありがとう!

4

2 に答える 2

13

それらが代替手段であるというクリスの答えに反対しなければなりません。私は Rails アプリケーションで Shoulda と Rspec を一緒に使用していますが、これらは互いに補完し合っています。

この組み合わせにより、関連付けや検証などの反復的なものに対して簡潔な 1 行の単体テストを記述でき、さらに複雑な仕様用の完全な rspec スイートを使用できます。競合することなく、両方の長所を最大限に活用できます。

Rspecと一緒にインストールする方法を示すShoulda READMEを確認してください。「一般的な Rails 機能をテストする Test::Unit および RSpec 互換のワンライナーを提供します。そうしないと、これらのテストははるかに長く、より複雑になり、エラーが発生しやすくなります。」

編集(例):

仕様の一番上で、簡潔で読みやすい Class 関係と検証テストを常に宣言します。

describe Component do

  context 'relationships' do
    it { should belong_to(:technology)}
    it { should have_many(:system_components) }
    it { should have_and_belong_to_many(:variables) }
    it { should have_many(:images).dependent(:destroy) }
    it { should have_many(:documents).dependent(:destroy) }
  end

  context 'validations' do
    it { should validate_presence_of(:make) }
    it { should validate_presence_of(:model) }
    it { should ensure_length_of(:name).is_at_most(100) }
    it { should validate_presence_of(:technology_id) }
  end
end

次に、仕様の残りの部分には、Rspec から派生したモックとスタブを使用する、より複雑なテストが含まれます。

于 2011-01-06T01:35:59.040 に答える
0

rspecとshouldaは互いに代替です。私もshouldaから始めましたが、rspecへの移行は、、と同じくらい簡単でs/context/describe/s/should/it/レースに出かけることができます。rspecにはたくさんのトリック、さまざまな統合、そしてより複雑なマッチャーがあるので、私は最近それをもっと自分で使用しています。

私の最初の不満の1つは、RailsとCucumberを想定していないチュートリアルを見つけることがほぼ不可能だったことです。考えすぎないでください。それを使ってできることはたくさんありますが、使用する前にソリューションのモンスターを配置する必要はありません。

于 2011-01-05T21:53:32.077 に答える