Функциональное тестирование и сессии в Symfony 4.4 - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь написать функциональный тест для моего проекта Symfony 4.4 на основе этой документации: https://symfony.com/doc/current/testing.html#functional -tests . Я пытаюсь войти в систему указанного пользователя c, выполнить поиск заголовка на странице, которую пользователь увидит после входа в систему, нажать на ссылку, заполнить форму и, наконец, найти строку на последней странице. На этой последней странице требуется установить сеанс (начатый на предыдущей странице). Все тесты пройдены успешно, только последний не пройден, потому что сеанс не установлен. Вот пошаговое руководство по моему коду:

шаг 1: войдите в систему с указанием c пользователя

$client = static::createClient();
$client->followRedirects();
$crawler = $client->request('GET', '/nl/login');
$form = $crawler->selectButton('Login')->form();
$form['email'] = 'MYLOGIN';
$form['password'] = 'MYPASS';
$crawler = $client->submit($form);

шаг 2: поиск H2 чтобы убедиться, что процедура входа в систему работает

  $this->assertGreaterThan(
  0,
  $crawler->filter('html h2:contains("Openstaande bestellingen")')->count()
);

=> Этот тест работает нормально

шаг 3: найдите ссылку и нажмите ее

 $link = $crawler
  ->filter('a:contains(" nieuwe bestelling")')
  ->eq(0)
  ->link()
;
$crawler = $client->click($link);

шаг 4: найдите H2, чтобы убедиться, что нажатие на ссылку прошло успешно

$this->assertGreaterThan(
  0,
  $crawler->filter('html h2:contains("Nieuwe bestelling")')->count()
);

=> Этот тест работает нормально

Шаг 5: заполните форму

$form = $crawler->selectButton('Volgende stap')->form();
$form['step1[patient_reference]'] = 'functionalautotest';
$form['step1[headcat]']->select('1');
$form['step1[cat]'] = '1';
$crawler = $client->submit($form);

Шаг 6: найдите строку на странице, для которой требуется сеанс, заданный на предыдущей странице

  $this->assertContains(
  'Duid één of meerdere opties aan ',
  $client->getResponse()->getContent()
);

=> Этот тест не пройден, возвращая это сообщение:

Failed to start the session because headers have already been sent by ".../vendor/symfony/phpunit-bridge/bin/simple-phpunit

Вот мой файл config / packages / test / framework.yaml

framework:
test: true
session:
    storage_id: session.storage.mock_file

Я также пробовал :

$client->insulate();

Тогда я больше не получаю эту ошибку, но тест на шаге 6 также не проходит, потому что не установлена ​​необходимая переменная сеанса.

Заранее спасибо за помощь на этом топи c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...