设置请求内容以在 symfony 中测试

Posted

技术标签:

【中文标题】设置请求内容以在 symfony 中测试【英文标题】:Set request content to test in symfony 【发布时间】:2021-12-27 12:38:41 【问题描述】:

我必须设置一个测试来使用 API 检查用户注册,但我不确定如何设置内容,它必须有一个带有 token named x-auth-tokenand the body with aform 的标题-data` 参数命名数据,包含 json-string

 public function testUserRegister()
    $client = static::createClient();
    $server = array('x-auth-token' => '...');
    $client->request(Request::METHOD_POST, self::$uri, [], [], $server);
    $response = $client->getResponse();

    self::assertEquals( Response::HTTP_CREATED, $response->getStatusCode());

当我检查调试时,标题上没有 x-auth-token

【问题讨论】:

我不明白你的代码看起来不错!!你有什么错误吗? 参数未发送,我收到 400 错误,因为令牌未到达 你用的是哪个api? 它是为我开发的 api,它工作正常,但我无法设置测试请求 【参考方案1】:

使用$client->request方法的第三个参数来传递你的数据。

如果您想使用 JSON 将有效负载作为表单数据发送,您需要执行以下操作:

$client->request(..., ..., ['data' => json_encode(...)], ...);

请记住,您可能需要在标头 (application/x-www-form-urlencoded) 中设置正确的 Content-Type

【讨论】:

以上是关于设置请求内容以在 symfony 中测试的主要内容,如果未能解决你的问题,请参考以下文章

通过单元测试访问 Symfony 2 容器?

Symfony 3.4 功能测试

如何托管多个 symfony 项目?

Symfony 2 - 在单元测试期间将会话数据添加到请求对象

如何在 symfony2 功能测试中发出 https 请求?

在 phpunit 测试中覆盖 symfony TokenAuthenticator