/TDDをテストできるようにLaravelで検証をどのように構成する必要がありますか?Laravel検証、テスト方法/ TDD?
ユニットテストでアサートできるように、コントローラーで何かをする代わりにValidationException
をサービスから投げる必要があると思います。
例えば、私はなど私は$password
が正しいことと$newPassword
が空でないことを確認する必要がありUserService
でchangePassword($user, $password, $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