使用 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() 替换上面的工作示例?
最佳答案
您可以使用 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');
}
}
关于php - 如何使用PHPUnit设置ExpectedException()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646298/