Не удается установить строку запроса в функциональных тестах - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь протестировать свои методы API с установленной строкой запроса.Однако я не могу.Тесты просто игнорируют мою строку запроса, делая ее пустой в теле методов API.

Я использую Symfony 4.2.5 и PHPUnit 6.5.14

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class TodosControllerTest extends WebTestCase
{
    public function testGetTodos()
    {
        $c = static::createClient();
        $c->request('GET', '/todo?length=0');
        $this->assertEquals(Response::HTTP_BAD_REQUEST, $c->getResponse()->getStatusCode());

Я хочу, чтобы /todo работалс length=0, но это не так.

public function getTodos()
{
    $r = $this->getRequest();
    var_dump($r->query->all()); // empty array
    var_dump($_GET);            // empty array

1 Ответ

1 голос
/ 07 апреля 2019

Проблема была в том, что я воссоздаю объект запроса из глобалов, которые пусты в тестах (Request::createFromGlobals() в конструкторе и $this->getRequest() в методах).Единственный правильный способ получить объект запроса - получить его из параметров метода:

public function getTodos(Request $r)
{
    var_dump($r->query->all()); // parsed query string array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...