rest - 在 codeception 中将文件发送到 Restful 服务

标签 rest testing laravel codeception laravel-5

我想测试用于文件上传的 restful API 测试。

我尝试运行:

 $I->sendPOST($this->endpoint, $postData, ['file' => 'example.jpg']);

我希望它的行为与用户在名称为 file 的文件输入中发送的 example.jpg 文件相同,但它似乎无法以这种方式工作。我得到:

[PHPUnit_Framework_ExceptionWrapper] An uploaded file must be an array or an instance of UploadedFile.

是否可以在 codeception 中使用 REST 插件上传文件?文档非常有限,很难说如何去做。

我还在使用 Google ChromePostman 插件测试 API,我可以使用这个插件毫无问题地上传文件。

最佳答案

我最近一直在努力解决同样的问题,发现有另一种方法可以在不使用 Symfony 的 UploadedFile 类的情况下解决这个问题。您只需要以与 $_FILES 数组相同的格式传递包含文件数据的数组。例如,这段代码对我来说效果很好:

$I->sendPOST(
    '/my-awesome-api',
    [
        'sample-field' => 'sample-value',
    ],
    [
        'myFile' => [
            'name' => 'myFile.jpg',
            'type' => 'image/jpeg',
            'error' => UPLOAD_ERR_OK,
            'size' => filesize(codecept_data_dir('myFile.jpg')),
            'tmp_name' => codecept_data_dir('myFile.jpg'),
        ]
    ]
);

希望这对某人有所帮助并防止检查框架的源代码(我被迫这样做,因为文档跳过了如此重要的细节)

关于rest - 在 codeception 中将文件发送到 Restful 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437633/

相关文章:

java - 使用 EJB 注入(inject)用户实体

java - 高枕无忧, float 负零

javascript - 获取解析分析自定义仪表板

c# - 移除用于生产的 InternalsVisibleTo

Laravel 原始选择错误;在 mysql 中工作

iOS 最成熟的 REST 服务库

php - 如何在 Laravel 中扩展 PHPUnit?

reactjs - 用 jest enzyme 测试 react router v4

javascript - 在 laravel 中使用 FormData 上传文件时输入为空

javascript - 如何将 Laravel/PHP 函数传递给 JS