Я застрял в том, как правильно протестировать метод в службе Symfony, единственная цель которой - вызывать другие методы в других службах.
Попытка модульного тестирования метода путем проверки каждой зависимости, и относительные методы, которые он использует, на мой взгляд, просто делает тест бесполезным, поскольку то, что я тестирую, так или иначе, состоит в том, что другие службы вызываются правильно .
Кроме того, поскольку я читаю из различных источников, я не должен издеваться над тем, что мне не принадлежит, и в основном все такие методы используют по крайней мере один (EntityManager
, EncoderFactory
и т. Д.)
Попытка выполнить функциональное тестирование с загрузкой ядра, захватом службы и вызовом метода была кошмаром, и я застрял в утверждении, что электронные письма были отправлены, так как мне нужен клиент и ответ, чтобы захватить все электронные письма, которые ' отправлено от профилировщика.
Это пример таких методов, которые я должен проверить:
public function postRequestCreatedActions(PrivacyRequest $request, $sendNotifications = true)
{
$this->customLogger->logRequest($request);
if ($sendNotifications) {
$this->customMailer->sendRequestCreated($request);
}
$this->em->flush();
}
Итак, мой вопрос: если есть способ правильно протестировать методы, подобные этим (модульные или функциональные), как мне его протестировать?
Если такой метод является непроверяемым, и его нужно изменить или полностью удалить, как вы посоветуете его реорганизовать, не забивая контроллер, который его вызывает (каждый вызывается контроллером)? Или единственная возможность перенести всю эту логику на контроллер?