在我尝试测试的函数的开头,检查是否已设置所需的输入。如果它们不是例外则抛出:
public function save(array $input) {
if (!isset($input['var1']) || !isset($input['var2'])) {
throw new BadRequestException('Invalid parameters for ' . $this->class . ':save');
} .........rest of function
我是否需要将其分成另一个函数来测试异常?如果设置了var1且未设置var2,以及设置了var2且未设置var1,我知道我想测试这个。我在testSave函数中测试,还是应该将它分成另一个测试函数?如果我在相同的功能中进行测试,我该怎么做?
答案 0 :(得分:2)
您可以断言使用@expectedException
注释抛出特定异常。
/**
* @test
* @dataProvider dataInvalidInput
* @expectedException BadRequestException
*/
public function saveShouldThrowException($invalidInput)
{
$this->subject->save($invalidInput);
}
public static function dataInvalidInput()
{
return array(
'var1_missing' => array('var2' => 1),
'var2_missing' => array('var1' => 1),
'both_missing' => array('var3' => 1),
);
}
您还可以使用@expectedExceptionCode
和@expectedExceptionMessage
声明例外的代码和消息。
阅读手册中的更多内容:Testing Exceptions