以下の内容はhttps://www.utakata.work/entry/laravel/database-json-assertionより取得しました。


Laravel の assertDatabaseHas で JSON のカラムを比較する

assertDatabaseHas について

Laravel には assertDatabaseHas という、データベースにデータが存在するかどうかチェックするアサーションがあります。

詳細は Laravel のドキュメントの「データベーステスト」を見てください

https://readouble.com/laravel/12.x/ja/database-testing.html

この時に、JSON カラムを比較したい場合は、 castAsJson メソッドを利用する必要があるので注意です。

OK

<?php

$this->assertDatabaseHas('users', [
    'id' => 1,
    'tag' => $this->castAsJson(['game', 'anime']),
]);

NG

<?php

$this->assertDatabaseHas('users', [
    'id' => 1,
    'tag' => ['game', 'anime'],
]);
<?php

$this->assertDatabaseHas('users', [
    'id' => 1,
    'tag' => json_encode(['game', 'anime']),
]);

テストが落ちた時のメッセージからはまず気付けないので注意が必要です。




以上の内容はhttps://www.utakata.work/entry/laravel/database-json-assertionより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14