это восходит к определению и использованию модульных тестов.
Предполагается, что модульные тесты будут проверять четко определенные функциональные возможности, например, вы можете написать алгоритм, функциональность которого очень хорошо определена. Затем, поскольку вы знаете, как он должен функционировать, вы можете выполнить его модульное тестирование.
Модульные тесты по определению не предназначены для прикосновения к каким-либо внешним системам, таким как, помимо прочего, файлы, API, базы данных, все, что требует выхода за пределы логической единицы, то есть кода, который вы хотите протестировать.
Существует множество причин, среди которых скорость выполнения. Вызов API или использование стороннего вызова занимает некоторое время. Это не обязательно проблема, когда вы смотрите на один тест, но когда у вас есть 500 тестов или больше, задержки будут важны. Основная идея заключается в том, что вы должны выполнять свои модульные тесты постоянно, очень быстро, вы получаете немедленную обратную связь, что-то сломано, я что-то сломал в других частях системы. В любой зрелой системе вы будете запускать эти тесты как часть процесса CI / CD, и вы не можете позволить себе слишком долго ждать их завершения. нет, они должны запускаться за считанные секунды, поэтому у вас есть правила того, чего они должны или не должны касаться.
Вы издеваетесь над внешними вещами, чтобы повысить скорость выполнения и устранить сторонние проблемы, поскольку вы действительно хотите только протестировать свой собственный код.
Что если вы позвоните стороннему API, и он не будет обслуживаться? Значит ли это, что вы не можете протестировать свой код из-за них?
Теперь, что касается насмешек, не злоупотребляйте ими слишком сильно: если вы кодируете функционально, вы можете избавиться от большого количества насмешек. Вместо передачи или хард-кодирования зависимостей передайте данные. Это позволяет очень легко изменять входные данные без особой насмешки. Вы некоторое время тестируете систему, используя тесты интеграции / e2e, это дает вам уверенность в том, что ваши зависимости разрешены правильно.