PHPUnit: как отправить необработанные данные для размещения ссылок на запросы для тестирования в Lumen? - PullRequest
2 голосов
/ 06 марта 2020

Я использую PHPUnit по умолчанию, который поставляется с Lumen. Несмотря на то, что я могу создать фиктивный пост-звонок по моей ссылке, я не могу найти способ подачи на него необработанных данных.

В настоящее время для макета JSON ввода из официального документа , я могу:

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

Или, если я хочу простой ввод формы, я могу:

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

Есть ли способ вставить необработанное содержимое тела в запрос на публикацию ? (Или, по крайней мере, запрос с вводом XML? Это сервер для получения обратного вызова от WeChat, где у нас нет выбора, но мы вынуждены использовать XML, как нам хотелось использовать WeChat.)

1 Ответ

4 голосов
/ 06 марта 2020

Как указано в документации , если вы хотите создать собственный HTTP-запрос, вы можете использовать метод call:

Если вы хотите создать собственный HTTP запросите в своем приложении и получите полный объект Illuminate \ Http \ Response, вы можете использовать метод вызова:

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

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

Вот метод call :

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();
}
...