gpt4 book ai didi

php - 如何使UploadedFile对UnitTest无效?

转载 作者:行者123 更新时间:2023-12-02 21:11:18 24 4
gpt4 key购买 nike

我正在 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,这是默认值。

设置错误的唯一方法是通过构造函数,因为它是私有(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com