2013-10-17 52 views
1

使用phpspec,是否可以使用註釋或類似命令運行多個值相同的測試?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

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); 
    } 
} 
+2

有觸及phpspec的這個「限制」,並解釋了爲什麼這不是phpspec的一部分很好的博客。 http://techportal.inviqa.com/2014/09/11/my-top-ten-favourite-phpspec-limitations/ – Scalable

+0

https://github.com/coduo/phpspec-data-provider-extension –

相關問題