考虑模型中的以下代码。函数 deleteUser(NULL) 将触发异常。
class Model_UserModel extends Zend_Db_Table_Abstract{
protected $_name = 'users';
protected $_primary = 'id';
public function deleteUser($id){
$row=$this->find($id)->current();
if($row){
$row->delete();
return true;
}else{
throw new Zend_Exception("Delete function failed; could not find row!");
}
}
}
我使用 PHPUnit 来测试这段代码,我想检查当 NULL 传递给函数 deleteUser 时是否确实触发了异常。测试类中的代码如下:
class Application_Model_UserModelTest extends PHPUnit_Framework_TestCase{
...
//deleting a user with ID=NULL should fail
public function testDeleteNull(){
$e = null;
try{
$this->_users->deleteUser(NULL);
}catch (Exception $e) {}
if($e) {
$this->assertTrue(TRUE);
}else{
$this->assertTrue(FALSE);;
}
}
虽然这似乎可行,但我想知道是否有更好的方法来做到这一点。我审查了以下问题:
使用 PHPUnit 和 Zend Framework 测试异常的问题
但我没有完全理解它们/看看在这种情况下如何应用(测试模型,而不是控制器)。
是否有更好的测试异常的方法被抛出?任何建议将不胜感激。