ラボ > Laravel、Lumen:テスト

laravel ユニットテスト:DBから取得したデータを確認したい

作成日:2025-04-11, 更新日:2025-04-11

コントローラーで、下記のような形でDBからデータを取得

$request_search = array(
  'word' => 'hoge',
  'page' => 1,
);
$list = Lib\ItemLib::search($request_search);

テストコード

実行部分

$request_search = [
    'word' => 'hoge',
    'page' => 1,
];
$results = ItemLib::search($request_search);

// 各種確認の処理

各種確認の処理: $resultsがEloquentの場合

$this->assertCount(●, $results); // 結果が●件か確認
$this->assertTrue($results->pluck('title')->contains('hoge●●')); // 結果にtitleが「hoge●●」があるか確認
$this->assertTrue($results->pluck('title')->contains('hoge★')); // 結果にtitleが「hoge★」があるか確認

各種確認の処理: $resultsが配列の場合

$this->assertCount(●, $results); // 結果が●件か確認

$title_many = array_column($results, 'title'); // 結果から「title」だけ抜き出した配列に変換
$this->assertContains('hoge●●', $title_many);
$this->assertContains('hoge★', $title_many);

各種確認の処理: $resultsが配列でちょっと面倒な内容の場合

「検索対象であるか確認、対象が有効であるか確認」をしたい

// $results = array(
//   array('title' => 'hoge●●', 'enabled' => 1),
//   array('title' => 'hoge★', 'enabled' => 0),
// );
foreach ($results as $row) {
    // キーワードが含まれているか(部分一致)
    $this->assertStringContainsString($request_search['word'], $row['title']);

    // 有効フラグが 1 であること
    $this->assertEquals(1, $row['enabled']);
}