Это также может быть результатом использования отражения. Если у вас есть код, который отражает класс, и извлекает метод по имени (например: с Class.getDeclaredMethod("someMethodName", .....)
), то в любое время, когда имя метода изменяется, например, во время рефакторинга, вам нужно будет помнить, чтобы обновить параметры до метода отражения для соответствия новой сигнатуре метода, или вызов getDeclaredMethod
вызовет NoSuchMethodException
.
. Если это причина, то трассировка стека должна показывать точку, в которой используется метод отражения, и вы Вам просто нужно обновить параметры, чтобы они соответствовали фактической сигнатуре метода.
По моему опыту это иногда возникает при модульном тестировании частных методов / полей и использовании класса TestUtilities
для извлечения полей для проверки теста. (Как правило, с устаревшим кодом, который не был разработан с учетом модульного тестирования.)
Проблема возникла из-за того, что я генерировал токен CSRF после выполнения запроса. Это привело к тому, что токен сгенерировался дважды (я обнаружил, что он сбрасывает вещи в CsrfTokenManager
).
Это работает:
// generates the CSRF token
$csrfToken = $client->getContainer()->get('security.csrf.token_manager')->getToken('division_item');
$crawler = $client->request('POST', '/teachers/add');