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