/*
А контроллер кто писал?
я спрашивал по отдельним пакетам
artem
я спрашивал по отдельним пакетам
Напиши dic, и складывай объект в свой контейнер
artem
ВАпрос. Есть у кого дока по настройке xdebug для макос под 7.4? Вроде все поставил, в шторме всё настроил, но через постмен не пробьюсь
Daria
ВАпрос. Есть у кого дока по настройке xdebug для макос под 7.4? Вроде все поставил, в шторме всё настроил, но через постмен не пробьюсь
Возможно проблема в ключе, который ты передаешь при запросах из постмена, он точно правильный?
artem
Возможно проблема в ключе, который ты передаешь при запросах из постмена, он точно правильный?
Да) xdebugsessionstart) 100500 раз настраивал дебаг) утром скопипастю конфиги с компа
artem
Сорри) просто не пойму почему когда ты настраиваешь линуху все намного проще
Anonymous
Привет! Тут есть боги тестов? )))
Kirill
Привет! Тут есть боги тестов? )))
Если только сосланные сюда в наказание)
Anonymous
Если только сосланные сюда в наказание)
самое то ))) просто уперся в тестт, нужно содействие
Kirill
Юнит?
Anonymous
да
Kirill
Давай ближе к делу
Anonymous
Есть событие и подписчик. В контроллере подключается событие. Наверное тут подойдет юнит-тест. Необходимо проверить, что событие случается при вызове контроллера и в подписчике формируется некий набор данных, надо проверить их корректность.
Сергей
Это не юнит
Anonymous
может, только начал изучать
Anonymous
сейчас для меня они на одно лицо
Anonymous
1 условно контроллер public function index(): Response { $this->eventDispatcher->dispatch(new EnyEvent(.....)); return $this->render('home_page/index.html.twig', [ 'controller_name' => 'HomePageController', ]); }
Anonymous
2 подписчик подписчик public function enyMethod(EnyEvent $event) { // формируется массив данных }
Сергей
Юнит - это если ты проверяешь, что событие вызывается. Можешь проверить его аргументы на соответствие. В отдельном тесте тестируешь подписчика.
Anonymous
значит первый это юнит
Anonymous
а второй?
Сергей
но контроллеры юнитами не тестируют обычно) Для этого функциональные тесты
Anonymous
> Юнит - это если ты проверяешь, что событие вызывается. но контроллеры юнитами не тестируют обычно) я запутался )
Сергей
Функциональный - это имитация действий пользователя. Обращаешься к контроллеру, проверяешь всякие коды ответа и т.д Юниты - проверка бизнес-логики, отдельных методов
Сергей
Можно и на контроллер юнит повесить, но лучше событие вынести в отдельное место и уже это место протестировать
Anonymous
понял, тогда получается первый случай это функциональный, те пользователь обращается к контроллеру, мне надо понять, отработало событие
Anonymous
я не понимаю, как понять, что оно отработало )
Anonymous
Можно и на контроллер юнит повесить, но лучше событие вынести в отдельное место и уже это место протестировать
public function testEventCreate() { $entity = new Entity(); $event = (new enyEvent($entity)); $this->assertSame($entity, $event->getEntity()); }
Anonymous
тут только соотвествие данных проверяется
Anonymous
так с чего начать?
Сергей
если до рендера дошло, значит отработало А результат этого события тестируешь уже в тесте самого обработчика
Anonymous
ясно, у меня апи, там нет рендеринга ) но в ответе нет данных о результатах события, там подписчик свое дело делает
Сергей
Короче, в контроллере тебе обработчик тестировать не надо. Надо диспетчер заменить моком и проверить что он был вызван.
Anonymous
а как проверить, что он был вызван
Сергей
$this->eventDispatcher->expects(static::once())->method('dispatch')->with(...)
Юра
В симфе можно заменить любой сервис
Anonymous
спасибо
Юра
Напиши свой врапер для диспатчера
Сергей
$this->eventDispatcher = $this->createMock(EventDispatcherInterface::class);
Юра
Пишешь комппйлер пас, находишь дефинишен сервиса, меняешь ему класс
Anonymous
а с подписчиком, как его проверить?
Юра
Лтгируешь выховы подписчиков
Юра
И увидишь вызвался или нет подписчик
Юра
В какую-то статическую переменную
Anonymous
Пишешь комппйлер пас, находишь дефинишен сервиса, меняешь ему класс
я где это в документации, я не понимаю, что ты говоришь )
Юра
Вот нашел может подойдет
Юра
https://packagist.org/packages/tweakers/symfony-service-mock
Anonymous
Лтгируешь выховы подписчиков
там подписчик отсылает данный в сторонний сервис
Юра
Ну вон пакет выше
Юра
Замени нужный сервис и всё
Юра
Или читай доку про service container, compiler pass, definition object
Юра
https://symfony.com/doc/current/service_container/service_decoration.html
Юра
Можно так еще попробовать
Юра
Но в этом случае я так понимаю тебе надо будет вручную все методы прокинуть в декрориуемый сервис
Юра
А тот пакет делает это сам
Юра
Постигнешь это искусство сможешь любые тесты писать
Anonymous
мне пакет не даст тимлид поставить )
Андрей
В дев секцию даст
Кот.
Всем привет, есть ссылки на гите с примерами работы с разными микросервисами, кто как реализует и работает с ними ? Заранее большое спасибо ))
Кот.
Что именно не понятно?
Хочу посмотреть как правильно реализовывать работу с сервисами, что использовать в случаях grpc, rest api и например html и как это должно грамотно выглядеть (переучиваюсь с битрикса)))
Юра
Я работал в большом проекте где было много сервисов. Там юзали ребит для передачи сообщений
Юра
Типо надежно
Юра
Rabbitmq
Юра
Но это не панацея просто один из способов
Roman
namespace app\controllers;
Roman
вот это бьет не так
Roman
как минимум
Roman
поглядел код - вообще все не так 🙂
Roman
мне кажется, этот вопрос вчера уже тут был
Roman
каша какая-то в голове у того, кто код писал
/*
не такой был