ワン慣用的なアプローチは、RSpec shared examplesをパラメータとともに使用することです。私は各テーブルの行が別個のテストケースに対応していると仮定し、列は関係する変数を分解します。
例として、設定に基づいて自動車の価格を計算するコードがあるとします。クラスCar
があり、price
メソッドが製造元の推奨小売価格(MSRP)に準拠していることをテストしたいとします。
私たちは、以下の組み合わせをテストするために必要とされることがあります。
Doors | Color | Interior | MSRP
--------------------------------
4 | Blue | Cloth | $X
2 | Red | Leather | $Y
はのは、この情報と正しい動作のためのテストをキャプチャし、共有の例を作成してみましょう。
RSpec.shared_examples "msrp" do |doors, color, interior, msrp|
context "with #{doors} doors, #{color}, #{interior}" do
subject { Car.new(doors, color, interior).price }
it { should eq(msrp) }
end
end
は、この共有の例を書いたので、私たちはその後、簡潔にコードの重複を負担することなく、複数の構成をテストすることができます。
Car
#price
it should behave like msrp
when 4 doors, Blue, Cloth
should equal X
when 2 doors, Red, Leather
should equal Y
ほとんど私は「それは「やるべきでテーブルを尽くすことを除いて探していますものです:私たちは、この仕様を実行すると
、出力は次の形式でなければなりませんどのような "do"部分。ありがとう! –