概要
laravelのテストのおいて、テーブルのnot null系のチェック方法をまとめる
内容
一見 assertDatabaseHusを使えば下記のようにチェックできそうな気がする。
しかしながらそんなことはなく普通にエラーになる。(はず)
$this->assertDatabaseHas(
table: 'reset_emails',
data: [
'email' => $email,
'verify_code' => ['<>', null],
'limit_at' => $expectedLimitAt,
]
);
下記のように実際にクエリを走らせてその結果のboolをassertTrueでチェックするとうまく確認できる。
// assertDatabaseHasだとnot nullのチェックができないためクエリでチェック
$exists = DB::table('reset_emails')
->where('email', $email)
->whereNotNull('verify_code',)
->where('limit_at', $expectedLimitAt)
->exists();
$this->assertTrue($exists);