繁体   English   中英

PHPUnit:如何提交原始数据以发布请求链接以在 Lumen 中进行测试?

[英]PHPUnit: how to submit raw data to post request linking for testing in Lumen?

我正在使用 Lumen 附带的默认 PHPUnit。 虽然我能够创建一个对我的链接的模拟帖子调用,但我无法找到一种方法来向它提供原始数据。

目前,为了模拟 JSON 输入,从官方文档,我可以:

     $this->json('POST', '/user', ['name' => 'Sally'])
         ->seeJson([
            'created' => true,
         ]);

或者,如果我想要简单的表单输入,我可以:

    $this->post('/user', ['name' => 'Sally'])
         ->seeJsonEquals([
            'created' => true,
         ]);

有没有办法可以将原始正文内容插入到发布请求中? (或者至少是一个带有XML输入的请求?这是一个接收微信回调的服务器,我们别无选择,只能像微信一样使用XML。)

文档中所述,如果要创建自定义 HTTP 请求,可以使用call方法:

如果你想在你的应用程序中创建一个自定义的 HTTP 请求并获得完整的 Illuminate\\Http\\Response 对象,你可以使用 call 方法:

public function testApplication()
{
    $response = $this->call('GET', '/');

    $this->assertEquals(200, $response->status());
}

这是调用方法:

public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)

所以在你的情况下,它会是这样的:

$this->call('POST', '/user', [], [], [], ['Content-Type' => 'text/xml; charset=UTF8'], $xml);

要访问控制器中的数据,您可以使用以下命令:

use Illuminate\Http\Request;

public function store(Request $request)
{
    $xml = $request->getContent();
    // Or you can use the global request helper
    $xml = request()->getContent();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM