170 похожих чатов

Всем привет, есть вопрос по тестированию. допустим, есть у нас контроллер

отвественный за парсинг и валидацию параметров запроса, аутентификацию и подготовку параметров для сервиса. сервис в свою очередь делает уже реальную работу, но по сути он глупенький, так как вся его логика это обращения во внешние системы - записал в редис, сохранил че-то в бакет, заскедюлил джобу. вопрос - если я хочу покрыть данный функционал интегрейшн тестами, system under test должен быть контроллер или сервис в данном случае?

15 ответов

24 просмотра

Это просто два разных теста. Тест на веб-слой и на слой сервисов.

sobakami- Автор вопроса
Ilya Starchenko
Это просто два разных теста. Тест на веб-слой и на...

а есть смысл тестировать их отдельно? тест на веб-слой ведь подразумевает что логика сервиса тоже вызывается

Я бы разделил на 2 - юнит тест контроллера что он правильно валидирует и готовит данные и интеграционный тест сервиса с контейнерами, что он корректно обрабатывает все кейсы - как ведет себя при недоступности редиса, че делает при отсутсвии бакета, че там у него с джобой

sobakami
а есть смысл тестировать их отдельно? тест на веб-...

Ну, во-первых, это проще, тебе не нужно поднимать редис, ты проверил все правильно ли серилизуется, и т.д. и все, во-вторых, чем атомарнее тест, тем лучше.

юнит на сервис, юнит на контроллер, интеграционный на все с помощью tc

Dima
юнит на сервис, юнит на контроллер, интеграционный...

По-моему его юнит на сервис - бессмысленный, у него там только внешнее взаимодействие.

Ilya Starchenko
По-моему его юнит на сервис - бессмысленный, у нег...

если только прокси - в целом да, но скорее зафиксировать контракты и если есть какая-то логика

sobakami- Автор вопроса
Ilya Starchenko
По-моему его юнит на сервис - бессмысленный, у нег...

плюс, там доменной логики никакой, тоже не вижу смысла юнит тесты писать

sobakami- Автор вопроса
Dima
юнит на сервис, юнит на контроллер, интеграционный...

вот интересная вещь, я читал книгу Хорикова о юнит тестах, и он там говорит мол в юнит тестах моков вообще не должно быть, единственное исключение - это если логика общается с внешним сервисом, и это общение - это часть его observable behavior, тогда нужно верифицировать контракты этого общения. но с другой стороны, он там рассуждает со стороны хорошего дизайна кода, когда у нас отдельно доменная логика (юнит тесты), и код контроллеров / application services, которые глупые и просто связывают приложение с внешним миром (it).

sobakami
вот интересная вещь, я читал книгу Хорикова о юнит...

ну есть много кейсов, например реальный ответ, вам приходит на email через неделю )

Необходимость тестировать контроллер как правило свидетельствует о проблемах архитектуры. Контроллер должен быть тонким и не иметь логики как таковой, он должен быть тупо клеем между бизнес-логикой приложения и фреймворком. Интеграционным/системным тестам это не противоречит, потому что там тестируется система целиком как неделимый ящик.

Etki
Необходимость тестировать контроллер как правило с...

>Необходимость тестировать контроллер как правило свидетельствует о проблемах архитектуры. ну это же не правда

Etki
Необходимость тестировать контроллер как правило с...

Автор же пишет > я хочу покрыть данный функционал интегрейшн тестами,

sobakami- Автор вопроса
Etki
Необходимость тестировать контроллер как правило с...

вопрос был как раз об интеграционных тестах, а точнее какой у них должен быть скоуп. то есть должны ли они тестировать только тот компонент, который непосредственно общается с внешними сервисами, или же проганять логику всех слоёв

sobakami
вопрос был как раз об интеграционных тестах, а точ...

"интеграционные" от слова "интеграция"

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта