私はBDDが初めてで、MiniTest Specで遊んでいます:
require 'minitest/spec'
require 'minitest/autorun'
class Car
attr_accessor :type
def initialize(type)
@type = 'petrol'
end
end
describe Array do
it "must be diesel" do
Car.new('diesel').type.must_equal 'diesel'
end
end
これは素晴らしいです-これを実行すると、次の出力が得られます。
Failure:
test_0001_must_be_diesel(ArraySpec):
Expected "diesel", not "petrol".
これは理にかなっています-「ガソリンではなくディーゼルを期待する」はまさに私が期待していることです. ステートメントに 2 番目のパラメーターを配置するmust_equal
と (これは、失敗したときに返したいメッセージだと思います)、奇妙な結果が得られます。
require 'minitest/spec'
require 'minitest/autorun'
class Car
attr_accessor :type
def initialize(type)
@type = 'petrol'
end
end
describe Array do
it "must be diesel" do
Car.new('diesel').type.must_equal 'diesel', 'it must be a diesel'
end
end
これを実行すると、次のようになります。
1) Failure:
test_0001_must_be_diesel(ArraySpec):
it must be a diesel.
Expected "petrol", not "diesel".
なんらかの理由で、「ディーゼルではなくガソリンが必要です」と表示されるようになりました。そのため、(テスト ユニット バージョンのように) メッセージ パラメーターであると想定しているものを追加すると、アサーションが逆転するようです。
仕様フレームワークのメッセージ パラメータのアイデアは無効ですか?