我正在测试在Laravel 5.1项目中上传文件。
签入验证方法之一如下所示
//assuming $file is instance of UploadedFile class
if ( ! $file->isValid()) {
/*add errors and return*/
}
我需要测试这个检查。
问题是:如何创建无效的上传文件?
(UploadedFile
扩展Symfony'Component'HttpFoundation'File
类,扩展SplFileInfo
php类(
我经常发现查看库源代码很有帮助:
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/File/UploadedFile.php
您可以看到 isValid
方法检查是否$this->error === UPLOAD_ERR_OK
,这是默认值。
设置 error
的唯一方法是通过构造函数:
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上传(以防测试实际创建文件(