php - 测试 Laravel 5.2 时不要移动原始文件

标签 php laravel unit-testing file-upload phpunit

我正在尝试为接收文件的 POST 回调编写测试。

Controller 使用此功能将图像移动到所需位置:

$request->file('image')->move(env('IMG_DIR'), $filename);

env('IMG_DIR') 在测试和本地环境中有所不同,但效果非常好。

我的测试如下:

$file = new UploadedFile(base_path() . 'tests/file/test_img.png', 'test.png', 'png', null, null, true);

$this->call('POST', '/endpoint', null, ['user-jwt' => env('CU_JWT')], ['image' => $file])

上传效果很好,图像移动正确,测试成功。

问题是,每次我运行测试时,用于测试的图像 (tests/file/test_img.png) 都会被移走并从目录中消失。 有没有办法告诉 PHPUnit/Laravel 上传只能是伪造的,而不是真正移动原始图像?

最佳答案

在您的开发环境中,制作图像的副本:

$originalImagePath = base_path() . 'tests/file/test_img.png'; 
$copyImagePath = base_path() . 'tests/file/test_img_copy.png';

File::copy($originalImagePath, $copyImagePath) 

然后仅使用复制的图像

$file = new UploadedFile($copyImagePath, 'test.png', 'png', null, null, true); // etc.

这样,复制的图像就会离开您的图像目录,然后您运行测试,一切都会以与开始时相同的方式结束。

关于php - 测试 Laravel 5.2 时不要移动原始文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39533828/

相关文章:

typescript - 如何使用 Jest 在 TypeScript 中模拟导入的函数?

java - 自定义代理未在 munit 测试中运行

PHP/SQL - 改进搜索功能/模糊搜索

php - Windows 7 中的 xampp 存在长目录名问题

javascript - VueJS : Working with v-class

php - Laravel 5.2 - 更改从 Eloquent 获取的数据格式

c# - 单元测试文件 I/O

php - Codeigniter:如何获取文件的文件名

javascript - $.ajax 没有给出指定的错误并且没有运行 php 脚本

laravel - 延迟()通知似乎不起作用