在Laravel中测试Input :: hasFile

时间:2015-01-28 14:06:16

标签: testing laravel file-upload phpunit facade

我正在使用

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?

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

希望这有帮助。

file此处是表单或API中用于接收上传文件的输入名称。您可以将其更改为参数名称。