Size: a a a

2020 November 19

YB

Yuri Barsukov in symfony
Vlad Sobenko
Предпочёл бы такую дичь не видить в коде.
$em->getRepo($class)->find($id). throw Exception. 
Лучше в мидлварах разрулить такое
для нашего проекта сейчас это недостижимо :)
источник

YB

Yuri Barsukov in symfony
Vlad Sobenko
Ну страдай теперь))0
спасибо.
ладно. буду страдать.
источник

VS

Vlad Sobenko in symfony
Yuri Barsukov
это не инфраструктура. это бизнес-логика, которая которая предварительно получает данные из БД.
В каком месте это бизнес логика?
источник

YB

Yuri Barsukov in symfony
Vlad Sobenko
В каком месте это бизнес логика?
в том, Что после получения данных, над этими данными соверщаются операции. :)
источник

YB

Yuri Barsukov in symfony
я же не весь метод вам скинул
источник

VS

Vlad Sobenko in symfony
Yuri Barsukov
в том, Что после получения данных, над этими данными соверщаются операции. :)
Ну так раздели эти 2 штуки. Где будут операции протести отдельно
источник

VS

Vlad Sobenko in symfony
А не страдай с моками entity manager->getRepo
источник

AA

Artem Aleksandrov in symfony
Быстрее отрефачить, чем писать на это тест. Ты много потратишь времени, а техдолг даже увеличишь
источник

DT

Dmitriy Tkachenko in symfony
Yuri Barsukov
в том, Что после получения данных, над этими данными соверщаются операции. :)
отдели часть получения данных от части операции над данными, будет легче тестировать
источник

YB

Yuri Barsukov in symfony
у меня в классе один публичный метод, который вызывает последовательно пачку приватных(каждый из которыйх достает и проверяет наличие данных). вот на этот публичный метод я и пишу тест
источник

DT

Dmitriy Tkachenko in symfony
и будет похоже на unit тест хотябы
источник

VS

Vlad Sobenko in symfony
Yuri Barsukov
у меня в классе один публичный метод, который вызывает последовательно пачку приватных(каждый из которыйх достает и проверяет наличие данных). вот на этот публичный метод я и пишу тест
Запрет на создание новых классов?)
источник

YB

Yuri Barsukov in symfony
нет. никакого запрета.
просто наверное я неверно архитектуру сделал. :)
источник

YB

Yuri Barsukov in symfony
в любом случае всем спасибо за рекомендации.
источник

DT

Dmitriy Tkachenko in symfony
Yuri Barsukov
в любом случае всем спасибо за рекомендации.
почитай про imperative shell / functional core
источник

YB

Yuri Barsukov in symfony
Dmitriy Tkachenko
почитай про imperative shell / functional core
спасибо. гляну обязательно.
источник

VS

Vlad Sobenko in symfony
Yuri Barsukov
нет. никакого запрета.
просто наверное я неверно архитектуру сделал. :)
Так вынеси отдельно new BusinessRule($entity1, $entity2)->act() . Ну или через DI передай в аргументы $this->busnesHandler->handle($entity1, $entity2) Или как нить ещё
И протести.
источник

VS

Vlad Sobenko in symfony
Yuri Barsukov
приветствую.
пожскажите пожалуйста ответ на такой вопрос.
есть у меня в классе EntityManagerInterface
в методе класса последовательно вызываются
$entity = $this->entityManager->getRepository(SomeClass)->...
if (null === $entitty) {
   throw new Exception
}
$otherEntity = $this->entityManager->getRepository(SomeOtherClass)->...
if (null === $otherEntity) {
   throw new Exception
}
this->entityManager->getRepository(SomeThirdClass)->...

пытаюсь на этот метод написать юнит тест
можно ли(и если можно, то как правильно) описать expect() для мока EntityManager-а для следующего кейса
$mockEntityManager->expects(self::once())->method('getRepository')->with(SomeClass)...
$mockEntityManager->expects(self::never())->method('getRepository')->with(SomeOtherClass)...


Т.е. описать, что вызов метода с конкретным аргументом есть, а вот с другим аргументом уже нет.
Можно прям в закладки. Как не нужно писать юнит тесты)
источник

DT

Dmitriy Tkachenko in symfony
Vlad Sobenko
Можно прям в закладки. Как не нужно писать юнит тесты)
Все там были, чё ты)
источник

VS

Vlad Sobenko in symfony
Dmitriy Tkachenko
Все там были, чё ты)
Согласен. Просто прикольно, что в куске кода логики нет совсем, просто страдания с инфраструктурой, зачёт.
Офк тоже так делал)
источник