使用phpspec,是否可以使用注释或类似方法运行具有多个值的相同测试?
例如,假设我有以下测试:
public function it_should_return_sum_of_numbers_passed()
{
$number1 = 1;
$number2 = 1;
$expectedresult = $number1 + $number2;
$this->add($number1, $number2)->shouldReturn($expectedResult);
}
很好。但它只测试一组参数。如何传递-1和1,-1和-2等等。这是一个大规模简化的场景,但这意味着必须为每个边缘情况创建一个新方法。
答案 0 :(得分:4)
phpspec中没有数据提供者(至少现在还没有)。你必须做类似的事情:
public function it_should_return_sum_of_numbers_passed()
{
$examples = array(
array(1, 2, 3),
array(-1, 1, 0),
array(-1, -2, -3)
);
foreach ($examples as $example) {
$number1 = $example[0];
$number2 = $example[1];
$expectedResult = $example[2];
$this->add($number1, $number2)->shouldReturn($expectedResult);
}
}