2

私は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".

なんらかの理由で、「ディーゼルではなくガソリンが必要です」と表示されるようになりました。そのため、(テスト ユニット バージョンのように) メッセージ パラメーターであると想定しているものを追加すると、アサーションが逆転するようです。

仕様フレームワークのメッセージ パラメータのアイデアは無効ですか?

4

1 に答える 1

2

MiniTest::Spec が複数の引数を処理する方法に一貫性がありません。https://github.com/seattlerb/minitest/commit/cd4fe89b0057edc2258876ad8c5f5e7e722f73c2で修正されたようです。

RubyGems から MiniTest の最新バージョンをインストールするだけで問題ありません。

gem install minitest

次に、これをファイルの先頭に追加して、gem を使用します。

gem 'minitest'
于 2012-11-22T15:15:51.690 に答える