はじめに
以前にLaravelのFormRequestの単体テストのやり方という記事を書きましたが、この方法だとprepareForValidation()
やpassedValidation()
のメソッドは使われないので、これらのメソッドに処理を記述している場合はテストができないということになります。
なので、これらのメソッドも実行されるようなFormRequestのテストの書き方を書いていきます。
テストする
そもそもprepareForValidation()
やpassedValidation()
はprotectedなのでメソッド単位でテストすることができないので、FormRequest全体の流れをテストします。
public function test_()
{
$parameters = ['key' => 'value'];
$request = Request::create('', 'GET', $parameters);
app()->instance('request', $request);
$formRequest = app(HogeFormRequest::class);
$this->assertSame('value2', $formRequest->get('key'));
}
$parameters
に実際送信するパラメーターを連想配列で記述してください。
注意点はapp(HogeFormRequest::class);
で解決した時点でバリデーションを含む一連の処理が完了してます。