PHPUnit有一個非常有用的功能@dataProvider
,它允許測試多個方法的情況。它還有另一個很酷的註釋 - @expectedException
以確保應用程序在指定位置拋出正確的Exception
。如何在PHPUnit中使用數據提供程序測試異常?
我目前正在測試針對多個邊緣的情況下的方法,並希望這兩個特徵是這樣的(不工作密碼)結合:
class TestMyClass
{
/**
* @dataProvider provideDataForFoo
*/
public function testFoo($paramBar, $paramBuz, $expected)
{
$myObject = new MyClass();
$this->assertEquals($expected, $myObject->foo($paramBar, $paramBuz));
}
public function provideDataForFoo()
{
return [
['expected lorem', 'bar lorem', 'buz lorem'],
['expected ipsum', 'bar ipsum', 'buz ipsum'],
['expected exception', 'bar invalid argument', 'buz invalid argument'],
];
}
}
可能/如何使用@expectedException
爲一體的如果使用@dataProvider
?
如果只有一組應該拋出異常,則應該爲其添加一個單獨的測試。該測試應該調用實際拋出異常的代碼,因爲assertEquals()不會這樣做。 – jeroen