我是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".
这是有道理的 - “预期的柴油,而不是汽油”正是我所期待的。如果我在我的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".
出于某种原因,现在它说“预期的汽油不是柴油”。因此,似乎添加我假设的消息参数(因为它在测试单元版本中)正在使断言翻转。
推测框架中的消息参数的概念是否为空?
答案 0 :(得分:2)
MiniTest :: Spec处理多个参数的方式存在一些不一致之处。它似乎已在https://github.com/seattlerb/minitest/commit/cd4fe89b0057edc2258876ad8c5f5e7e722f73c2中修复。
只需从RubyGems安装最新版本的MiniTest,你就可以了:
gem install minitest
然后将其添加到文件顶部以使用gem:
gem 'minitest'