【问题标题】:Testing a POST request with specific parameter in Lumen在 Lumen 中使用特定参数测试 POST 请求
【发布时间】:2015-07-01 19:27:34
【问题描述】:

我的 Lumen 应用当前使用 501 响应响应 hub.mode 参数的未知值。如果没有 hub.mode 参数集,则返回 400 响应。我可以使用 cURL 手动测试此行为:

curl -v --data "hub.mode=unkown-value" http://lumen.app

正如预期的那样,有一个 501 响应。我似乎无法用phpunit 对此进行测试。这是我当前的测试用例:

public function test501ResponseFromUnkownMode()
{
    $this->call('POST', '/', ['hub.mode' => 'unkown-value']);

    $this->assertResponseStatus(501);
}

但是,返回 400 响应,表明 hub.mode 参数由于某种原因没有被 call() 方法传递。有没有人遇到过这种情况?

【问题讨论】:

  • 尝试将 -XPOST 添加到 curl 参数
  • 尝试手动将其添加到输入中。 \Request::merge(['hub.mode' => 'unkown-value'])
  • 我应该在哪里添加合并?只是把它放在$this->call(...) 行之后没有用,我试过的其他方法似乎也没有用。

标签: laravel testing acceptance-testing lumen


【解决方案1】:

更新: 我可以通过使用依赖注入来获取请求而不是使用外观 (Request::capture()) 来解决我的问题。似乎 Facade 不适用于测试?好吧,Laravel 5.1 中不再记录 Facade。 嗯,不知道我更喜欢什么。一个(未记录的)半工作特性或一个简单的错误消息,表明 5.1 中的 Facade 不再受支持。


你好,我这里有类似的东西。我使用 laravel 5.1。 并且evetyme我想调用('POST')一些我没有将参数传递给相应接收器的东西。此外,在控制器中,请求始终是 GET。

我不知道在调用 $this->post() 时会做错什么,如 laravel Docs 中所述。 http://laravel.com/docs/5.1/testing#testing-json-apis

这是我从 TestCase 打来的电话

$response = $this->post('/api/v1/projects', ["name" => "Fancy Test Project" ]);

这里是我想要“创造事物”的部分:

public function store()
{
    $request = Request::capture();
    $raw = $request->json();
    $body = $raw->all();
    $project = Project::create($body);
    if ($project) {
        return response($project->id, 201);
    }
    return response("Could not create Project. Malformed Request?", 400);
}

我错过了什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多