Тесты Symfony не вызывают моего LoginSubscriberPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Тесты Symfony не вызывают моего LoginSubscriber

Сообщение Anonymous »

Я использую Symfony 6.4, и у меня есть LoginSubcriber, который устанавливает некоторые дополнительные данные сеанса в зависимости от настройки учетной записи аутентифицированного пользователя. Эти дополнительные данные сеанса необходимы для работы сайта.
Мой подписчик зарегистрирован в /config/services.yaml как таковой:

Код: Выделить всё

services:
...
App\EventListener\LoginSubscriber:
tags: [ name: kernel.event_subscriber ]
И он отлично работает при входе в систему через браузер.
Моя проблема возникает при тестировании. Если я вызываю вход в систему $client->loginUser($user), то мой LoginSubscriber никогда не вызывается, из-за чего последующие запросы не работают должным образом, поскольку у них нет правильной настройки данных сеанса в LoginSubscriber.
Чтобы обойти эту проблему, я изменил свой тест на вход пользователя в систему вручную, пройдя весь процесс:

Код: Выделить всё

class FullSearchTest extends WebTestCase
{
public function testPartialSearchRequiresThreeCharacters(): void
{
$client = static::createClient();

$crawler = $client->request('GET', '/');
$form = $crawler->selectButton('SIGN IN')->form([
'_username' => 'admin',
'_password' => 'password',
]);
$client->submit($form);
$client->followRedirects();

$client->request('GET', '/search', [
'firstName' => 'fo',
]);

$this->assertResponseIsUnprocessable();
}
}
Я запускаю тест с помощью phpunit, например php bin/phpunit
Для маршрута/поиска требуется ROLE_USER, поэтому они должны быть зарегистрированы in.
Думаю, мой вопрос в том, есть ли способ заставить $client->loginUser($user); запускать LoginSubscriber, а если нет, то мой обходной путь ручного входа в систему, эффективный в в долгосрочной перспективе, когда я добавлю все больше и больше тестов?

Подробнее здесь: https://stackoverflow.com/questions/792 ... subscriber
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»