Symfony 3.4 и CSRF-токен в функциональных тестах

Это также может быть результатом использования отражения. Если у вас есть код, который отражает класс, и извлекает метод по имени (например: с Class.getDeclaredMethod("someMethodName", .....)), то в любое время, когда имя метода изменяется, например, во время рефакторинга, вам нужно будет помнить, чтобы обновить параметры до метода отражения для соответствия новой сигнатуре метода, или вызов getDeclaredMethod вызовет NoSuchMethodException.

. Если это причина, то трассировка стека должна показывать точку, в которой используется метод отражения, и вы Вам просто нужно обновить параметры, чтобы они соответствовали фактической сигнатуре метода.

По моему опыту это иногда возникает при модульном тестировании частных методов / полей и использовании класса TestUtilities для извлечения полей для проверки теста. (Как правило, с устаревшим кодом, который не был разработан с учетом модульного тестирования.)

0
задан StockBreak 17 January 2019 в 16:46
поделиться

1 ответ

Проблема возникла из-за того, что я генерировал токен CSRF после выполнения запроса. Это привело к тому, что токен сгенерировался дважды (я обнаружил, что он сбрасывает вещи в CsrfTokenManager).

Это работает:

// generates the CSRF token
$csrfToken = $client->getContainer()->get('security.csrf.token_manager')->getToken('division_item');

$crawler = $client->request('POST', '/teachers/add');
0
ответ дан StockBreak 17 January 2019 в 16:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: