😀

Laravel テストメソッドの assertDatabaseHas に地味なプルリクを送ってみた

2022/07/14に公開

前書き

Laravel のテストメソッドの assertDatabaseHas で、見事テストに失敗すると、日本語部分がエンコードされていて、「うわっ、何これ?」という経験をした人は、私だけではないはずです。

この出力部分には、json_encode() が使われているのですが、エンコードを回避するには、第2引数のオプションに JSON_UNESCAPED_UNICODE を渡せば良いという事を知りました。

という事で、英検3級(確か😄)の実力とひよこレベルの Git/GitHub の知識を総動員して、laravel/framework にプルリクを送ってみました。

[9.x] Make assertDatabaseHas failureDescription more multibyte character friendly #43181

実は、以前というか、前々回送った時のプルリクもこの assertDatabaseHas メソッドに対してでした。そちらは見事散りましたけど…。😭 (#41002)

という事で、今回はそのリベンジです。 🔥

本題

という事で、| JSON_UNESCAPED_UNICODE を3箇所に付けるという誰にでも(私でも)できる変更ですが、プルリクを送って、幸い無事マージされました。

(逆に、これ位少ないコード量の方が、マージしてもらえる確率は高まりますね)
(バグFIXやかなり役立つ機能でない限り、基本は弾かれますかね…)

で、問題のこのプルリクの改善点は、以下を見て確認をお願いします。

サンプルテスト

    /** @test */
    function dbtest()
    {
        User::factory()->create([
            'name' => '名無しの権兵衛',
            'email' => '太郎@example.net'
        ]);

        $this->assertDatabaseHas(User::class, [
            'name' => '名無しの権兵衛',
            'email' => '次郎@example.net'
        ]);
    }

Before

After

雑感

これで少しばかし、テストも楽になるでしょうか。

Discussion