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가 정상적으로 진행된다.