如何使用Laravel通过干预图像包上传假图像进行测试

如何使用Laravel通过干预图像包上传假图像进行测试,laravel,laravel-5,tdd,intervention,Laravel,Laravel 5,Tdd,Intervention,我有一个测试断言图像可以上传。这是代码 // Test $file = UploadedFile::fake()->image('image_one.jpg'); Storage::fake('public'); $response = $this->post('/api/images', [ 'images' => $file ]); 然后在控制器中,我正在做一些更简单的事情 $file->store('images', 'public'); 还有几件事。它就像

我有一个测试断言图像可以上传。这是代码

// Test

$file = UploadedFile::fake()->image('image_one.jpg');
Storage::fake('public');

$response = $this->post('/api/images', [
'images' => $file
]);
然后在控制器中,我正在做一些更简单的事情

$file->store('images', 'public');
还有几件事。它就像魅力一样

但现在我需要使用干预图像包调整图像大小。为此,我有以下代码:

 Image::make($file)
        ->resize(1200, null)
        ->save(storage_path('app/public/images/' . $file->hashName()));
如果目录不存在,我首先检查并创建一个-

if (!Storage::exists('app/public/images/')) {
        Storage::makeDirectory('public/images/', 666, true, true);
         }
现在测试应该是绿色的,我会的,但问题是每次运行测试时,它都会将一个文件上传到存储目录中。这是我不想要的。我只需要假装上传,而不是真的

有解决办法吗


提前感谢:)

您需要使用
Storage
facade存储文件<代码>存储::putAs不工作,因为它不接受干预映像类。但是,您可以使用
存储::put

$file = UploadedFile::fake()->image('image_one.jpg');
Storage::fake('public');

// Somewhere in your controller
$image = Image::make($file)
        ->resize(1200, null)
        ->encode('jpg', 80);

Storage::disk('public')->put('images/' . $file->hashName(), $image);

// back in your test
Storage::disk('public')->assertExists('images/' . $file->hashName());