1
/TDD를 테스트하려면 Laravel에서 유효성 검사를 어떻게 구성해야합니까?Laravel 검증, 테스트하는 방법/TDD?
컨트롤러에서 무언가를하는 대신 서비스에서 ValidationException
을 던져서 단위 테스트에서이를 어설 션 할 수 있어야한다고 생각합니다. 예를 들어
$password
가 올바른지 내가 확인해야
UserService
에서
changePassword($user, $password, $newPassword)
방법이 그
$newPassword
는
나는 여기 https://stackoverflow.com/a/23595760/964478 같이해야한다 등, 비어 있지? Validator::make
어딘가에
if ($validator->fails())
{
throw new ValidationException($validator);
}
를 통해 그리고 단위로 검증을 만들기
public function should_not_change_password_if_incorrect_current_password()
{
$user = ......;
$this->expectException(ValidationException::class);
$this->userService->changePassword($user, 'incorrect', 'newPassword');
}
을 테스트 또는 더 나은 방법이있다?
아니면 테스트를 거치지 않고 수용 테스트 (HTTP 응답, 세션 확인 ...)를 수행해야합니까?
서비스 수준에서 확인 하시겠습니까? 컨트롤러에서 요청을 처리하고 있습니다. 이 서비스에서 어떤 이점이 있습니까? – jcorry
@jcorry 어떻게 테스트합니까? 수락 테스트 레벨에서만 (POST 요청을 수행하고 응답/세션에서 오류를 확인하는 것과 같은)? 나는 단위 테스트에서 그것을하려고 노력했다. 또한 일부 서비스 방법은 여러 곳에서 사용될 수 있으므로 코드 중복을 피할 수 있다고 생각했습니다. – AlexP11223
예, 컨트롤러 코드는 수락/통합 테스트에서 가장 잘 테스트됩니다. 이것이 바로 검증을 테스트 할 곳입니다. – jcorry