Laravel тест POST маршрутов с XML - PullRequest
1 голос
/ 04 июля 2019

Я посмотрел на этот вопрос , но это не совсем то, к чему я стремлюсь.

У меня есть конечная точка API в приложении Lumen, которое принимает XML.Внутри контроллера я читаю данные, выполняя это: $request->getContent();.

Я пытаюсь написать модульный тест, который отправляет XML на маршрут и получает ответ.Я попробовал это $response = $this->call('POST', '/api', $xml);, но третий параметр должен быть массивом, а не строкой.

Как бы я отправил строку XML в конечную точку в модульном тесте?

Ответы [ 2 ]

6 голосов
/ 08 июля 2019

Подпись call: :

   /**
     * 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);

0 голосов
/ 07 июля 2019

Вы можете попытаться преобразовать строку xml в массив, как описано здесь, в stackoverflow или если вы просто хотите получить весь xml, возвращаемый путем вызова $request->getContent(), тогда вы можете использовать строку xml как массив типа $response = $this->call('POST', '/api', [$xml]);

...