【Laravel】モックでzipファイルを返却する方法!

2024/10/07に公開

泉(@izumin_0401)です。

今回は、Laravelのモックでzipファイルを返却する方法を解説します!

ブログ記事はこちら

https://traveler0401.com/laravel-mock-zip/

【Laravel】モックでzipファイルを返却する方法

public function mock()
{
    $zip      = new \ZipArchive;
    $zip_path = tempnam(sys_get_temp_dir(), 'zip');

    if ($zip->open($zip_path) === true) {
        // zipファイルにcsvファイルを入れてみる
        $csv = implode("\n", [
            'id,name',
            '1,izumi',
        ]);
        $zip->addFromString('sample.csv', $csv);
        $zip->close();
    }

    $zip_file = file_get_contents($zip_path);
    unlink($zip_path);

    $this->app->bind(\App\Services\HogeService::class, function () use ($zip_file) {
        return Mockery::mock(\App\Services\HogeService::class)
            ->shouldReceive('exec')
            ->andReturn([
                'status_code' => 200,
                'body'        => $zip_file,
            ])
            ->getMock();
    });
}

↑みたいな感じで、zipファイルを作成した後にMockeryを使ってzipファイルを返せばOK!

まとめ

「application/zip」ってキモいよね。

ではまた。

最後に

暇つぶしにTwitterブログもやってるので見てね。

Discussion