1

使用 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 等等怎么样?公平地说,这是一个大大简化的场景,但这意味着必须为每个边缘情况创建一个新方法。

4

1 回答 1

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);
    }
}
于 2013-10-20T10:15:41.090 回答