ただバリデーションテストを書きたいだけだった
こんな感じでValidator取得すればいけるやろ〜
$formRequest = new FormRequest();
$v = $formRequest->getValidator();
$v->passes();
そこでValidatorを取得できそうなメソッドを探したが、すべてprotected
メソッドだったのであった...
こんなふうに書きました
public function test_FormRequest_validate()
{
$data = [];
$formRequest = new FormRequest();
$v = \Validator::make(
$data, $this->app->call([$formRequest, 'rules']),
$formRequest->messages(), $formRequest->attributes()
);
$this->assertTrue($v->passes());
}
もとのFormRequestクラスの内部では↓こんなふうにValidatorを取得しています。
$factory->make(
$this->validationData(), $this->container->call([$this, 'rules']),
$this->messages(), $this->attributes()
);
app->call()
とすることで、rules()
でメソッドインジェクションをしていた場合でもDIしてくれます。