我目前工作的一個開源的個人項目,提供一個很好的後端API的遊戲開發商。我正處於開發的早期階段,但我計劃隨着時間編寫測試,這正是我遇到困難的地方。當運行單元測試與laravel,你怎麼測試你的應用程序::錯誤()實現?
通過了系統的時候是不正確的API憑證或丟失憑證發生這樣的錯誤,我把它存儲一些額外的數據,以便我能趕上它,並給一個JSON編碼的響應自定義異常。
測試工作的優良那些在我BaseController拋出,但我也拍攝了幾Laravel例外,所以我可以用我自己的迴應,或者至少,輸出JSON象下面這樣:
應用程序/啓動/全球。 PHP
App::error(function(Exception $exception, $code) {
Log::error($exception);
});
App::missing(function(Exception $exception) {
return BaseController::error(
Config::get('response.method.code'),
Config::get('response.method.http'),
'Method not found'
);
});
App::error(function(Viper\Exception $exception) {
return BaseController::error(
$exception->getCode(),
$exception->getStatusCode(),
$exception->getMessage()
);
});
我使用的try { } catch() { }
方法,因爲我需要檢查的額外價值,是不是在正常的例外。
public function testNoMethodGET() {
$config = Config::get('response.method');
try {
$this->call('GET', '/');
} catch(\Viper\Exception $e) {
$this->assertEquals($e->getCode(), $config['code']);
$this->assertEquals($e->getStatusCode(), $config['http']);
}
$this->fail('Exception not thrown');
}
這是所有良好和不好,但我要檢查的幾件事情上的實際反應,例如像json的是否是有效的,無論是否響應結構相匹配,以及是否響應值是正確的。
如果我設置的$this->call()
一個變量的返回值,我無法catch塊中訪問該變量,所以這個問題是這樣的,我怎麼能測試$this->call()
返回值,一旦有異常被抓到?
啊優良,謝謝:) – ollieread