s, ну а ты сам себя спроси. Что такое активный пользователь? Это событие логона? Или просто вызов любого rest-метода. Или скачивание статик-контента? Это все разное.
IMount, рано еще читать. Ты сначал определи какой тип БД используется на предприятии. Там может быть MSSQL, Postgres e.t.c. Так было лет 10 назад. Как щас не знаю. Потом почитай как Go умеет работать с базами данных. Возможно придётся выбирать какой драйвер качать и как с ним работать.
WbICHA, я не буду спорить. Я не UI-щик. Главное чтоб это не было эконоимией на спичках. Кроме того стектрейсы ошибок всё таки хочется читать с внятным названием сущностей.
Илья Андрюхин, в некоторой альтернативной вселенной развитие этой мысли приведет к необходимости отказаться от Python и перейти сразу на Common-Lisp или Sheme. Там уже не будет обозримых границ. Бери любую переменную исходного кода.
Ну и показ баланса и update нужно обернуть единой транзакцией. Иначе будут смешные аномалии типа снял больше денег чем на самом деле было с депозитного счета.
MoyMirok, закрой все от внешнего интернета. Свои пользователи вряд-ли будут хулиганить. Логи-то пишутся. И ставь потихоньку патчи. Они уже опубликованы.
WebDev, если твой сервис - это просто DAO - то тестировать его не нужно.
Тестируют обычно функции которые имеют отношение к бизнес-логике но при этом не имеют state.
Например profileDTOMapper. Что он делает? Он что-то примает на вход (results) делает какое-то обогащение
и отдает объект. Он вроде-бы независимый? Можно его попробовать протестировать Unit-тестом.
То что ты написал - это не тестируется Unit-тестами. У тебя присутсвтует обращение к внешнему
сервису (судя по всему)
$this->userService->getProfiles($user)
Это - либо интеграционные либо end-to-end.
Если ты очень хочешь превратить это в модульное - то надо сервис на ходу заменять на Mock.
Как - это делать в PHP - я не знаю. Надо искать есть ли такие практики и фреймворки. Возможно
это потащит за собой некий рефакторинг в виде ООП с наследованием.
Если ты не знаешь как писать - то начни с бизнес-утверждений которые должны быть проверены.
Например - если getProfiles вызван с существующим пользователем то должен будет выдан такой-то View
с такими-то полями. И пишешь текстом:
public function assume_that_get_profiles_returns_correct_view_when_user_exists(...)
Василий, на собеседовании разработчиков обычно спрашивают алгоритмы и умение читать и понимать код.
Какой-то кастомный API могут спросить но никто не требует дотошного знания порядка параметров. Сами собедующие его не помнят поэтому относятся с пониманием.