我正在使用
if (Input::hasFile('index')) doSomething();
检查文件是否已上传。
现在我想编写一个PHPUnit测试用例,其中系统需要像上传“index”文件一样。
Input::shouldReceive('hasFile')->andReturn(true)
不起作用。
laravel docs中也有一个注释:你不应该模拟Request门面。相反,在运行测试时将所需的输入传递给调用方法。
所以也许这毕竟不是一个好主意。
我尝试模拟\ Symfony \ Component \ HttpFoundation \ File \ UploadedFile并将其传递给我的调用方法,但在我为所有方法定义“shouldReceive”后,系统预期它仍然无法正常工作。< / p>
有没有办法测试通话,以便Input::hasFile
在没有上传实际文件的情况下返回TRUE?
谢谢
答案 0 :(得分:0)
我不确定你是如何编写模拟测试代码的。但您可以通过以下方式尝试:
$mockInput = Mockery::mock('\Illuminate\Http\Request');
$mockInput->shouldReceive('file')->andReturn($my_test_data);
Input::swap($mockInput);
希望这有帮助。
file
此处是表单或API中用于接收上传文件的输入名称。您可以将其更改为参数名称。