Testing 正在测试Laravel中的输入::hasFile
我正在使用Testing 正在测试Laravel中的输入::hasFile,testing,laravel,file-upload,phpunit,facade,Testing,Laravel,File Upload,Phpunit,Facade,我正在使用 if (Input::hasFile('index')) doSomething(); 检查文件是否已上载 Input::shouldReceive('hasFile')->andReturn(true) 现在我想写一个PHPUnit测试用例,系统需要像上传“索引”文件一样运行 Input::shouldReceive('hasFile')->andReturn(true) 不起作用 laravel文档中还有一个注意事项:您不应该模拟请求外观。相反,在运行测试时,将
if (Input::hasFile('index')) doSomething();
检查文件是否已上载
Input::shouldReceive('hasFile')->andReturn(true)
现在我想写一个PHPUnit测试用例,系统需要像上传“索引”文件一样运行
Input::shouldReceive('hasFile')->andReturn(true)
不起作用
laravel文档中还有一个注意事项:您不应该模拟请求外观。相反,在运行测试时,将所需的输入传递给call方法
所以也许这毕竟不是个好主意
我尝试模拟\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);
希望这有帮助
文件
这是表单或API中用于接收上传文件的输入名称。您可以将其更改为参数的名称。嗯……在提问之前,我已经看到过这种尝试。这对我不起作用。我无法使“hasFile”方法返回true。