【发布时间】:2015-10-08 00:59:28
【问题描述】:
我是 Laravel 的新手,我需要一些帮助来重构我的代码。 现在,方法没有 100% 覆盖在测试中,因为我无法模拟验证器对象及其响应。 我的控制器中有以下方法
public function store(Request $request)
{
$data = $request->only([
'name',
'email',
'message',
]);
$validator = Validator::make($data, $this->validatorRules);
if ($validator->fails()) {
return $this->response->errorFromValidator($validator);
}
$savedItem = $this->repository->store($data);
if (!$savedItem) {
return $this->response->error('Cannot save');
}
return $this->response->succesItem($savedItem);
}
我尝试在控制器的构造函数中注入验证器:
function __construct(Response $response, Repository $repository, Validator $validator)
{
$this->response = $response;
$this->repository = $repository;
$this->validator= $validator;
}
并在方法中使用它:
$this->validator::make($data, $this->validatorRules);
但我收到语法错误,意外的“::”(T_PAAMAYIM_NEKUDOTAYIM)。 如何在方法之外抽象验证器,以便在测试中模拟验证器?
【问题讨论】:
-
你不能做
$this->validator::make,它是一个对象,而不是一个类......所以你应该做一些更像$this->validator = Validator::make的事情
标签: php validation unit-testing laravel