1
我應該如何組織驗證在Laravel是能夠測試/ TDD?Laravel驗證,如何測試/ TDD?
我想我需要從服務中拋出ValidationException
而不是在控制器中做某些事情,以便能夠在單元測試中斷言它。
例如,我有changePassword($user, $password, $newPassword)
方法UserService
,我需要檢查$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