如何使用PHPUnit的setExpectedException()?

时间:2011-01-10 11:26:05

标签: php phpunit

使用PHPUnit我可以成功测试,如果对类的特定调用正确抛出这样的异常:

try 
{
    $dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');   
}
catch (Exception $ex) 
{
    return;
}
$this->fail("Import_Driver_Excel::get_file_type_from_file_name() does not properly throw an exception");

但我看到here有一种更简单的方式,基本上在一行中使用setExpectedException()

class ExceptionTest extends PHPUnit_Framework_TestCase
{
    public function testException()
    {
        $this->setExpectedException('InvalidArgumentException');
    }
}

但是我如何让它像上面的例子一样工作,即我想测试该类只有当我使用'BAD_NAME.nnn'进行特定调用时才会抛出此异常这些变体不起作用:

$dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');  
$this->setExpectedException('Exception');

也不是:

$this->setExpectedException('Exception');
$dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn'); 

如何使用setExpectedException()替换上面的工作示例?

1 个答案:

答案 0 :(得分:1)

您可以使用expectedException annotation

class ExceptionTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException InvalidArgumentException
     */
    public function testException()
    {
        $dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');

    }
}
相关问题