モデル内の次のコードを検討してください。関数 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 を使用してこのコードをテストし、関数 deleteUser に NULL が渡されたときに例外が実際にトリガーされることを確認したいと考えています。テスト クラスのコードは次のようになります。
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 で例外をテストする際の問題
しかし、私はそれらを完全には理解していませんでした/この場合にそれがどのように適用されるかを確認してください(コントローラーではなくモデルをテストします)。
例外がスローされたことをテストするより良い方法はありますか? どんなアドバイスでも大歓迎です。