Laravel使用XML测试POST路由

时间:2019-07-04 19:52:00

标签: php laravel lumen

我看过this question,但这并不是我所追求的。

我在带XML的Lumen应用程序中有一个API端点。在控制器内,我正在这样做:$request->getContent();

我正在尝试编写一个将XML发布到路由并检索响应的单元测试。我尝试了此$response = $this->call('POST', '/api', $xml);,但是第三个参数必须是数组,而不是字符串。

如何在单元测试中将XML字符串发布到端点?

2 个答案:

答案 0 :(得分:6)

The signature of the call is

   /**
     * Call the given URI and return the Response.
     *
     * @param  string  $method
     * @param  string  $uri
     * @param  array  $parameters
     * @param  array  $cookies
     * @param  array  $files
     * @param  array  $server
     * @param  string|null  $content
     * @return \Illuminate\Foundation\Testing\TestResponse
     */
    public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)

因此,您可以将xml作为最后一个参数传递:

$this->call('POST', '/api', [], [], [], [], $xml);

答案 1 :(得分:0)

您可以尝试按照here on stackoverflow所述将xml字符串转换为数组,或者,如果您只想通过调用MaterialDrawer返回整个xml,则可以将xml字符串用作数组,例如$request->getContent()