저는 게임 개발자를위한 멋진 백엔드 API를 제공하는 오픈 소스 개인 프로젝트에서 현재 일하고 있습니다. 나는 개발의 초기 단계에 있지만, 내가 가면서 시험을 치를 계획이다. 그것은 내가 걸린 부분이다.laravel로 단위 테스트를 실행할 때 App :: error() 구현을 어떻게 테스트합니까?
잘못된 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()
의 반환 값을 테스트 할 수 있습니다 붙잡 혔어? 테일러 Otwell에 따르면
Ahh 우수, 고맙습니다. :) – ollieread