gpt4 book ai didi

在 Laravel 中测试 Input::hasFile

转载 作者:行者123 更新时间:2023-11-28 20:15:02 26 4
gpt4 key购买 nike

我在用

if (Input::hasFile('index')) doSomething();

检查文件是否上传。

现在我想编写一个 PHPUnit 测试用例,其中系统需要像上传“索引”文件一样运行。

Input::shouldReceive('hasFile')->andReturn(true)

不起作用。

在 laravel 文档中也有一条注释:你不应该模拟 Request 门面。相反,在运行测试时将所需的输入传递给调用方法。

所以也许这毕竟不是一个好主意。

我尝试模拟\Symfony\Component\HttpFoundation\File\UploadedFile 并将其传递给我的调用方法,但是在我为系统期望的所有方法定义“shouldReceive”之后它仍然无法正常工作。

有什么方法可以测试调用,以便 Input::hasFile 无需上传实际文件就返回 TRUE?

谢谢

最佳答案

我不确定您是如何编写模拟测试代码的。但您可以通过以下方式尝试:

$mockInput = Mockery::mock('\Illuminate\Http\Request');
$mockInput->shouldReceive('file')->andReturn($my_test_data);
Input::swap($mockInput);

希望这对您有所帮助。

file 这里是在你的表单或 API 中输入名称来接收上传的文件。您可以将其更改为您的参数名称。

关于在 Laravel 中测试 Input::hasFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28194261/

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