【问题标题】:Testing Input::hasFile in Laravel在 Laravel 中测试 Input::hasFile
【发布时间】:2015-03-27 11:18:59
【问题描述】:

我正在使用

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

检查文件是否已上传。

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

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

不工作。

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

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

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

有什么方法可以测试调用,以便Input::hasFile 在不上传实际文件的情况下返回 TRUE?

谢谢

【问题讨论】:

    标签: testing laravel file-upload phpunit facade


    【解决方案1】:

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

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

    希望这会有所帮助。

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

    【讨论】:

    • 嗯...在问这个问题之前,我已经看到了这种尝试。它对我不起作用。我无法让“hasFile”方法返回 true。
    猜你喜欢
    • 2014-04-15
    • 2015-11-27
    • 2014-11-13
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多