LaravelでHTTPステータスコード419のエラーは、CSRFのエラーです。
CSRFトークンが一致しないときに発生します。
ミドルウェアのVerifyCsrfTokenを無効にすることで、このCSRFエラーを回避できます。
「use WithoutMiddleware」トレイトを使うとテストクラスのミドルウェアを無効にできますが、
VerifyCsrfToken以外のミドルウェアも無効になってしまいます。
class ExampleTest extends TestCase
{
use WithoutMiddleware;
}
テスト実行時に対象の処理のみVerifyCsrfTokenを無効にするほうが望ましいと思いますので、
以下のように対象のテストに「withoutMiddleware(VerifyCsrfToken::class)」を追加します。
use App\Http\Middleware\VerifyCsrfToken;
class ExampleTest extends TestCase
{
public function testStore() {
$this
->withoutMiddleware(VerifyCsrfToken::class)
->post(route('store'), ['no' => 1])
->assertViewIs('index');
}
}
これで、このテストではVerifyCsrfTokenは無効になり、CSRFエラーは発生しなくなります。