phpunit测试中的异常测试
在我尝试测试的函数的开头,有一个检查,以查看是否设置了所需的输入。如果它们不是异常,则会引发异常:phpunit测试中的异常测试,phpunit,Phpunit,在我尝试测试的函数的开头,有一个检查,以查看是否设置了所需的输入。如果它们不是异常,则会引发异常: public function save(array $input) { if (!isset($input['var1']) || !isset($input['var2'])) { throw new BadRequestException('Invalid parameters for ' . $this->class . ':save'
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函数中进行测试,还是应该将其分离到另一个测试函数中?如果我在同一个函数中进行测试,我该怎么做 您可以使用
@expectedException
注释断言引发特定异常
例子:
您还可以使用@expectedExceptionCode
和@expectedExceptionMessage
断言异常的代码和消息
阅读手册中的更多内容:这难道不只是测试异常吗?保存功能会继续测试吗?啊,好的,我想我明白你的意思了。使用正确的输入测试save函数,然后测试异常是否会以这种方式抛出。非常感谢。
/**
* @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),
);
}