我有对电话号码进行操作的 Ruby 2.0 代码,我想使用 MiniTest 对其进行测试。我有一个函数,它接受电话号码参数并对其进行测试(包括断言)。每次调用该函数时,我都希望它成为一个新的测试用例。像这样的东西:
listOfPhoneNumbersForTesting.each { |phone| testphone phone }
我不想要的是:
class test2125551212 < MiniTest::Unit::TestCase
def t2125551212
testphone "2125551212"
end
end
...重复 10、20 或 100 次以测试每个电话号码 ...
显然,我可以将循环代码放在 MiniTest::Unit::TestCase 中,但是无论我测试多少电话号码,这都会导致只有一个测试用例,我不喜欢这样。(另外,如果其中一个断言失败,则不再测试电话号码,我不希望这样!)另外,第二种形式对我来说似乎违反了 DRY,因为类名、函数名和参数都包含电话号码。
不知何故,我觉得我应该能够拥有一个名为 TestPhone 的类,并使用电话号码参数创建它,并将其放入 MiniTest 框架中。但如果可行的话,我愿意使用 setup()、Fixtures、元编程或其他任何东西。
listOfPhoneNumbersForTesting.each { |phone| TestPhone.new phone }
其中 TestPhone 是 TestCase 子类,并最终调用 testphone 来完成工作。
基本上,我想要的是: 1. 一个电话号码列表,如果我在列表中添加一个号码,我会在报告输出中再获得一个 TestCase。2. 如果与一个电话号码关联的测试失败,其余的仍会测试。3. 所有电话号码都经过相同的测试,其中包括几个断言。
非常感谢!