Size: a a a

2021 April 12

VM

Volodymyr Melko in symfony
это просто карго культ, аля все сервисы закрываем интерфейсами, для каждого объекта пилим фабрику
источник

DP

Dmitrii Petiagov in symfony
Не, сущность User тут просто пример. По сути меня интересует кто как инстанцирует сущности в отрыве от предметной области. Ведь наверняка это есть в почти каждом проекте.
источник

A

Anthony in symfony
1. Тем что он не в модели.
2. Этот код действительно бесполезен. Эти параметры должны быть в конструкторе, поскольку устанавливаются свойства самой модели. Не имеет смысла выносить это в отдельный конструктор.
3. Фабрика имеет смысл, когда устанавливается нечто не свойственное конкретной модели. Внешняя ссылка, например.
источник

AL

Alexander Lozovsky in symfony
Валидирую дто, в менеджере из дто собираю сущность. Запрещаю невалидное состояние сущности.
источник

A

Anthony in symfony
Карго культ быстро окупается, когда вы начинаете писать юнит тесты и у вас появляется необходимость в множестве моков
источник

A

Anthony in symfony
Да. DTO в помощь. Миллиард конструкторов не нужен, априори
источник

VM

Volodymyr Melko in symfony
а есть реально разница между моком модели и реальной моделью?
зачем писать $repositoryMock->willReturn($userMock), если можно написать $repositoryMock->willReturn($user)?
источник

A

Anthony in symfony
вы выпадаете из контекста. Я отвечал на "аля все сервисы закрываем интерфейсами"
И да, разница между $service и $serviceMock очень большая.
Да и мок модели - тоже большая разница.
Если ваш сервис пользует специфичную логику, вы сможете подсчитать, даже, сколько раз был вызван нужный вам метод.
источник

VM

Volodymyr Melko in symfony
чтоб замокаь сервис интерфейс тоже не нужен
источник

A

Anthony in symfony
Так что да: разница есть и она большая.
Просто написание тестов - это не обязанность, а необходимость
источник

A

Anthony in symfony
Не нужен, не пишите
источник

A

Anthony in symfony
Ставьте зависимость от реализации и не парьтесь.
источник

AK

Anton K. in symfony
это вы сказали про роли, я вообще изнчально про них и не думал
источник

VM

Volodymyr Melko in symfony
я говорю о том, что интерфейсы и фабрики - это карго культ очень у многих. Их пихают везде, потому что так надо, а не потому что они там действительно нужны
источник

A

Anthony in symfony
ну просто в примере было ::createAdmin, ::createGuest
источник

A

Anthony in symfony
вот я и спросил: зачем для этих целей фабричный метод?
источник

VM

Volodymyr Melko in symfony
вот как раз считая сколько какой метод раз вызвали вы пишете хрупкие тесты. Тест должен проверять что результат такой как ожидалось, а не сколько и каких методов было вызвано у модели. Вот именно потому моки моделей вообще нонсенс. По сути вы в своих тестах тестите имплементацию, а не контракт
источник

A

Anthony in symfony
По моему опыту, это карго-культ только до тех пор, пока в бизнес не пришел некий новый бизнес-аналитик. И вот тут будет весело всем, кто думал: ну как часто будет меняться реализация? Ну нафига мне стратегия, это же карго!
источник

VM

Volodymyr Melko in symfony
о преждевременной оптимизации слыхали?
так то это совсем не проблема извлечь интерфейс из реализации когда это реально потребуется
источник

A

Anthony in symfony
Тестирование бизнес логики - нонсенс? Ну хорошо, не тестируйте.
Хрупкие тесты - тут согласен. Но это скорее как крайний примерный случай приведено, а не обязательное условие тестирования. Не путайте
источник