概要
Laravelを使用してCSVファイルをアップロードする処理のテスト方法を説明します。
UploadedFile::fake()->createWithContent()を使うと、簡単にテスト用のCSVファイルを作成できます。
解説
createWithContent() メソッドを用いて、テスト用のCSVファイルを作成します。
このメソッドの第一引数にはファイル名を、第二引数にはファイルの内容を指定します。
以下の例では、id, name, created_at, updated_at の4つのカラムを持つCSVファイルを作成しています。
$content = <<<EOF
id,name,created_at,updated_at
1,北海道,2020-01-01 00:00:00,2020-01-01 00:00:00
2,青森県,2020-01-01 00:00:00,2020-01-01 00:00:00
EOF;
$file = UploadedFile::fake()->createWithContent('test.csv', $content);
次に、作成したCSVファイルをアップロードし、そのプロセスをテストします。
以下の例では、POSTリクエストを/uploadエンドポイントに送信し、レスポンスのステータスコードが200であることを確認しています。
$response = $this->json('POST', '/upload', [
'csv_file' => $file,
]);
$response->assertStatus(200);
この方法を利用することで、LaravelアプリケーションにおけるCSVファイルのアップロード処理のテストが容易になります。
環境
- PHP 8.0.6
- Laravel バージョン6.20.27