もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

laravelのFormRequestバリデーションのテスト方法にはassertInvalidを使う

はじめに

こんばんは。

めちゃめちゃ簡単ですが、知らなかったので備忘録です。

本題

readouble.com

今までは assertSessionHasErrors を使って以下みたいに書いてました。

        $article = Article::factory()->create();
        $response = $this->actingAs(User::factory()->create())
            ->post(route('article.update', $article->id), [
                'name' => null,
            ]);

        $response->assertStatus(302);
        $response->assertRedirect(route('article.create'));
        $response->assertSessionHasErrors(['name' => '名前が入力されていません。']);

assertSessionHasErrors の部分が assertInvalid に書き換えできるみたいです。

        $article = Article::factory()->create();
        $response = $this->actingAs(User::factory()->create())
            ->post(route('article.update', $article->id), [
                'name' => null,
            ]);

        $response->assertStatus(302);
        $response->assertRedirect(route('article.create'));
        $response->assertInvalid(['name' => '名前が入力されていません。']); ← assertInvalidに書き換えができる

最近かな?と思ったら laravel8からできるみたいでした...

知らないことより知ったかぶりしないことが大事ということで。

終わりに

laravel結構使ってますがまだまだ知らないこと多いです。

簡単でしたが、現場からは以上です。