Laravel phpunit Filestyem fake disk 설정

Laravel의 phpunit에서 fileupload를 테스트하기위한 공식 문서의 예제를 보면

    public function testAvatarUpload()
    {
        Storage::fake('avatars');

        $file = UploadedFile::fake()->image('avatar.jpg');

        $response = $this->json('POST', '/avatar', [
            'avatar' => $file,
        ]);

        // Assert the file was stored...
        Storage::disk('avatars')->assertExists($file->hashName());

        // Assert a file does not exist...
        Storage::disk('avatars')->assertMissing('missing.jpg');
    }

Storage::fake('avatars'); 부분을 설정해 해당 disk를 사용하려고 해도
$request->file('test')->store('test_files');이렇게 작성된 Controller를 통해 저장하게되면 storage/app/test_files에 저장되며, Storage::disk('avatars')->assertExists($file->hashName()); 가 계속 파일이 없다고 표시된다.

phpunit.xml 수정

<env name="FILESYSTEM_DRIVER" value="fake-local"/> 을 추가하고
Storage::fake('fake-local');, Storage::disk('fake-local')로 변경해주면,
storage/framework/testing/disks/fake-local/test_files/에 저장되며 test가 정상적으로 진행된다.

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.