我正在 Laravel 5.1 项目中进行上传文件的测试。
其中一种检查验证方法如下所示
//assuming $file is instance of UploadedFile class
if ( ! $file->isValid()) {
/*add errors and return*/
}
我需要测试这个检查。
问题是:如何创建无效上传的文件?
(UploadedFile
扩展了 Symfony\Component\HttpFoundation\File
类,该类扩展了 SplFileInfo
php 类)
最佳答案
我经常发现查看库源代码很有帮助:
您可以看到 isValid
方法检查是否 $this->error === UPLOAD_ERR_OK
,这是默认值。
设置错误的唯一方法是通过构造函数,因为它是私有(private)变量:
public function __construct($path, $originalName, $mimeType = null, $size = null, $error = null, $test = false)
因此,在创建 $file 对象时,只需确保将 $error 设置为某项即可。以下是所有可用的错误常量:
http://php.net/manual/en/features.file-upload.errors.php
例如,您可以这样做:
$file = new UploadedFile($path, $origName, $mimeType, UPLOAD_ERR_INI_SIZE, true);
测试时需要最后一个参数来禁用检查文件是否通过 HTTP 上传(如果您的测试实际创建文件)
关于php - 如何使UploadedFile对UnitTest无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33259212/