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