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