Мой подписчик зарегистрирован в /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();
}
}
Для маршрута/поиска требуется ROLE_USER, поэтому они должны быть зарегистрированы in.
Думаю, мой вопрос в том, есть ли способ заставить $client->loginUser($user); запускать LoginSubscriber, а если нет, то мой обходной путь ручного входа в систему, эффективный в в долгосрочной перспективе, когда я добавлю все больше и больше тестов?
Подробнее здесь: https://stackoverflow.com/questions/792 ... subscriber
Мобильная версия