测试phpunit测试中的异常

时间:2015-10-05 17:35:49

标签: phpunit

在我尝试测试的函数的开头,检查是否已设置所需的输入。如果它们不是例外则抛出:

    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函数中测试,还是应该将它分成另一个测试函数?如果我在相同的功能中进行测试,我该怎么做?

1 个答案:

答案 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