Владислав
обязательно попробуйте, это нужная вещь.
Владислав
в миддлварах вся валидация должна быть.
Владислав
в контроллере уже валидация логики, но не входных данных.
Arcos
ок. заюзаю. 😊 поработать копипастером придется конечно, но не страшно 😊
Arcos
Пока не знаю как миддлвары ведут себя в тестах
Arcos
Но узнаю 😊
Владислав
а я до сих пор тесты не писал под реальные проекты ) вот как раз собираюсь )
Александр
какой смысл миддлваре тестить отдельно? или контроллеры даже
Владислав
кстати, вот насущный вопрос: что тестировать? говорят, что нужно тестировать всё, что может вести себя не так, как ожидается. то есть, всё, что написал сам, например, какие-то методы не из коробки.
Владислав
верно ли это?
Александр
Ты сначала подумай, для чего нужны тесты, чтобы не писать тесты ради тестов
Александр
А там уже будет понятно, какие кейсы в каких местах тестировать
Владислав
тесты нужны чтобы было понимание, что при очередном изменении кода текущий код не был сломан.
Arcos
Я тесты пишу для а) проверки логики, б) построения архитектуры
Anonymous
ребят, подскажите а куда лучше выносить сложную логику? Я так понимаю для этого сервисы нужно делать?
Александр
Anonymous
+
а как их лучше организовать и связать с приложением? Как тестировать?
Anton
Владислав
Anonymous
а по сути работа с моделями в идеале должна тоже через сервисы быть?
Anton
https://medium.com/@remi_collin/keeping-your-laravel-applications-dry-with-single-action-classes-6a950ec54d1d
Александр
Александр
а как их лучше организовать и связать с приложением? Как тестировать?
организовать как имплементации интерфейсов, т.е. каждый сервис какойто интерфейс имплементит. потом проще мокать будет, или юзать несколько разных реализаций интерфейса исходя из контекста. зависимости прокидывать исключительно через DI, никаких фасадов или хелперов в сервисах
Anonymous
Anton
? Не понял
Anton
Модель это модель
Anton
сервис это сервис
Anton
В сервисе должна идти бизнес логика
Anonymous
у тебя в статье сервис зависит от модели
Anton
и ?
Anton
Я или не проснулся или чет не понимаю, в чем вопрос
Anton
Ребят статья не моя )) Это пример как выносить логику из контролеров и модели
Anton
Парень в стать называет это дело Action
Ivan
Я думла ты пробовал
Anton
у него оно отличается от Jobs тем что оно может возвращать значения
Anton
Я так примерно и делаю ток я сервисами обзываю
Ivan
а вынести логику можно просто создав отдельный класс у меня такие классы хелперами называются
Anton
Ну хоть "Беда" назови )
Anton
главное что б суть ясна была
Anton
Anonymous
Я не пойу что тебе не ясно то ?
ну почему к примеру как Иван говорит не создать отдельный класс, а делать сервис и через DI прокидывать его, в чем к примеру тут профит
Anonymous
не ясно еще как связывать эти сервисы.. Допустим в статье userservice почему то зависит от блога.. Думаю это можно как то лучше и гибче сделать
Anton
Ты не понял, сервис выполняет по факту какое то действие, которое несет в себе логику
Anton
ТЫ его выносишь из Модели и Контроллера для того что б не привязываться к системе скажем так
Anton
Т.е. Сервис получает объекты и что то с ними делает и отдает какой то результат
Anton
Это улучшает читабельность кода, и помогает при миграции проекта
Anton
Еще он спасает тебя от дублирования кода
Anton
пример
Anton
Есть у тебя сложное создание пользователя, которое завязано на каких то действиях, там человеку счет открыть или привзяать его проекту или еще что то
Anton
И у тебя два действия(маршрута) которое это делают
Владислав
Александр
Anton
Один тупо создание юзера, второй импорт массовый, если ты не используешь сервис, вероятность того что ты повторишь код велика
Anton
Корзина это у тебя не сервис это по факту сущность
Anonymous
Я так понимаю через контракты (интерфейсы), но что будет если несколько сервисов имеют очень похожие контракты.. Или как вариант товар, корзину и сервис заказа объединить в какой то глобальный модуль, чтобы они могли знать друг про друга
Александр
Arcos
В теории класс должен получить данные и вернуть результат
Arcos
А там уже делай что хочешь с ним
Александр
я их не сохраняю
Александр
я из них получаю какие то поля
Arcos
тогда не понимаю в чем проблема
Александр
в некоторых сервисах
Arcos
Можешь пример привести?
Anton
Arcos
Александр
моки не помогают?
помогают, проблема в том что приходится мокать по ублюдочному. магический __get, для того чтобы нужные проперти возвращались когда сервис их требует
Arcos
Artem
Dead Loppi:
Пыха выдержит если будет 3к запросов в секунду ?
Arcos