LaravelでCSVファイルをアップロードする処理をテストする

概要

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください