PHPUNIT Exceptionのテストをする場合の注意点
テストかいてて混乱したので備忘録として残しておく。
まず、PHPUNITではassert~の判定でfalseになった場合Exceptionを吐いている。
そのため、try{ 処理 } catch {Exception $e} だけだと判定によるExceptionなのか、実際にthrowされたExceptionなのか区別ができなくなる。
try{
mogemoge(); ←☆このメソッドではthrow newExceptionをする
$this->assertTrue(False); ←● assertでfalse判定
} catch(PHPUnit_Framework_AssertionFailedError $e){
●ここに飛んでくる
} catch(Exception $e) {
☆ここに飛んでくる
}
※☆の処理でExceptionを吐いた時点で●の処理は実行されない
Catchで取り分けることで意図的なExceptionとassertによるExceptionを切り分けることができる。