
Dinar
19.09.2017
11:12:55

Sergey
19.09.2017
11:13:59
чтобы поменять местами значения и лейблы
а в 3й версии задепрекейтили ее

Google

Sergey
19.09.2017
11:14:23
и в 4й убирают вообще
почему именно так даж не скажу, за этим не следил) но если интересно можно покопать ишьюсы https://github.com/symfony/symfony/search?p=6&q=choices_as_values&type=Issues&utf8=%E2%9C%93

Dinar
19.09.2017
11:15:13
Я к тому что сделали что текст в ключах а значение в value.

Sergey
19.09.2017
11:19:02
https://github.com/symfony/symfony/issues/15606 чет с этим связанное было

Dima
19.09.2017
12:47:25
нужно ли тестировать ивент сабскрайберы?

Ilya
19.09.2017
12:47:51

Dima
19.09.2017
12:48:49
как избежать при этом дублирования логики сервисов с большой такой горой моков?

Sergey
19.09.2017
12:50:58
больше юзать value object-ы и т.д.
и моков станет сильно меньше

Dima
19.09.2017
12:52:32

Sergey
19.09.2017
12:54:26
ну то есть в этом собственно основная идея юнит тестов - давление на дизайн кода. Тесты, как любой другой клиентский код зависящий от твоего будут быстро реагировать на запашек
и по ним легко трекать изолированно что ты делаешь какую-то дич

Google

Sergey
19.09.2017
12:55:23
http://blog.thecodewhisperer.com/permalink/beyond-mock-objects
вот еще на тему мок объектов
и как не попасть в ловушку с ними

Dima
19.09.2017
12:56:42

Sergey
19.09.2017
12:59:59
такие вещи покрывают позитивные приемочные тесты
если все что делает код это делигирует выполнение другим штукам и просто описывает последовательность вызовов - юнит тесты тут не нужны. Максимум что можно сделать - это убрать остатки "логики" (то есть условия всякие или циклы) в другой объект и сделать наш тестируемый метод полностью тупым сценарием
тогда такой вот сценарий за неимением условий и логики будет удобно покрываться одним единственным позитивным тест кейсом (end-to-end, приемочные)

Daniel
19.09.2017
13:12:33
[Symfony\Component\Serializer\Exception\UnexpectedValueException]
The type of the "localId" attribute for class "BookerBundle\Entity\IntegrationReference" must be one of "string" ("integer" given).
Нужен костыль
Приходит Int, нужно чтобы чтобы приходил strin
g

Dinar
19.09.2017
13:41:32
Расширить энтити? :D

Symstriker
19.09.2017
13:42:32
костыль? Геттер левый, или нормалайзер ))
А вообще что-то я в сериалайзере не встречал подобного рода траблы
если только ты там что-то свое придумал хитрое

Dinar
19.09.2017
14:56:44
Использование трейтов в сервисах, для инджекта, скажем, энтити менеджера - это хорошо или плохо?
Просто сам энтити менеджер в сервисе не говорим.
И так понятно что плохо
Я исменно про трейт спрашиваю.

Google

Dinar
19.09.2017
14:57:17
@fes0r Что ты думаешь по этому поводу?

Sergey
19.09.2017
15:05:06
их можно только в репозиториях юзать

Mikhail
19.09.2017
15:05:39
а что если в сервисе нужен доступ к базе?

Sergey
19.09.2017
15:06:04
не стоит размазывать доктрину по всему проекту

Mikhail
19.09.2017
15:06:26
например, сервис, который распихивает данные по объектам и записывает их по тыще репозиториев

Sergey
19.09.2017
15:06:40
не припомню что бы у меня для записи нужно было более одного-двух репозиториев

Mikhail
19.09.2017
15:07:45
на самом деле мне просто не нравится инжектить репозитории

Pavel
19.09.2017
15:11:07

Sergey
19.09.2017
15:12:31

Anton
19.09.2017
15:12:43
репозиторий должен возвращать только сущности? как быть в случае если нужна выборка кторая не маппится на сущность, например аггрегация для дашборда? работать с энитити менеджером напрямую?

Sergey
19.09.2017
15:12:46

Dinar
19.09.2017
15:12:59

Sergey
19.09.2017
15:13:03
может стоит от наследования отказаться?)

Mikhail
19.09.2017
15:13:29

Google

Sergey
19.09.2017
15:13:35
а еще доменные ивенты начать эксплуатировать

Pavel
19.09.2017
15:14:44

Sergey
19.09.2017
15:14:54
и все подтягивается автовайрингом, и интерфейсы чистые и вообще ништяк
короч там где ты знаешь что "вот у меня закончилась бизнес транзакция и других перед этим точно не начиналось"

Pavel
19.09.2017
15:16:08

Sergey
19.09.2017
15:16:29
у меня доктрина изолирована за удобными интерфейсами МОИХ репозиториев.
единственное место помимо репозиториев которые знают о доктрине - контроллеры, потому что это всеравно инфраструктура
ну и где-то ж флашить надо
(ну и есть конечно парочка сервисов которые то напрямую с dbal работают, гейтвеи такие вот, есть отдельно для репортов штуки которым тоже em нужен, но это потому что мне было лень и там тип норм)
надо просто понимать какие зависимости и как надо изолировать и все)

Pavel
19.09.2017
15:19:14
Да мне было просто интересно подробнее, что ты имел в виду, а то с первого взгляда слишком категорично выглядело)
Так-то всецело разделяю такой подход.

Mikhail
19.09.2017
15:19:40
у меня контроллеры взаимодействуют только с http, вся логика в сервисах, которые я иногда вызываю из команд

Artemiy
19.09.2017
15:21:29
@fes0r а как ты относишься к такому подоходу - передавать @service_container в конструктор сервиса

Pavel
19.09.2017
15:22:07
Не понятно же от такого подхода какие реально зависимости класс имеет.

Artemiy
19.09.2017
15:22:46
Есть сервис, в котором нужны другие 5

Pavel
19.09.2017
15:23:06
Их и надо инжектить

Artemiy
19.09.2017
15:23:24
+ стандартных пара

Google

Anton
19.09.2017
15:23:49
Получится анти-паттерн сервис-локатор если передавать контейнер)

Artemiy
19.09.2017
15:23:57
пугает такой конструктор
Понял, спасибо. А по поводу em, может я пропустил, но что делать если нужна транзакция в сервисе

Pavel
19.09.2017
15:27:05

Artemiy
19.09.2017
15:29:25
вызывается репо на создание записи в базе, затем вызываем другой сервис в котором используется скажем id вставленной записи. затем commit

Dinar
19.09.2017
15:33:31

Artemiy
19.09.2017
16:00:49
@mindtrick скажешь что-нибудь? )
Есть вариант передавать connection для использования миграции (это избавит от em), но хз насколько так правильно

Pavel
19.09.2017
16:19:13
Так если работа с сущностями осуществляется есть смысл именно em и инжектить для флаша.

Artemiy
19.09.2017
16:20:46
em что-то уже не хочется использовать, как и сервис контейнер

Sergey
19.09.2017
16:21:00
а альтернатив пока нет)
хотя, можно EntityManagerInterface юзать

Artemiy
19.09.2017
16:21:45
Doctrine\DBAL\Driver\Connection

Sergey
19.09.2017
16:21:48
тогда желания getRepository сделать не будет
а. пардон. в родительском интерфейсе есть

Artemiy
19.09.2017
16:22:27
ага (
Doctrine\DBAL\Driver\Connection не пойдет?

Sergey
19.09.2017
16:22:45
EntityManagerInterface отличный пример нарушения ISP

Sergey
19.09.2017
16:23:20