Ваш сценарий ios довольно абстрактен, поэтому ответ таков:
Сценарий тестирования ios, который вы описываете, кажется, представляет собой смесь проблем модульного и интеграционного тестирования. В модульном тестировании вы хотели бы тщательно протестировать бизнес-логику c (вычисления, но в идеале не взаимодействовать с другими компонентами) с целью поиска ошибок в вычислительных частях. Зависимости от других компонентов (например, БД) вызывают беспокойство. Однако в интеграционном тестировании вы ищете ошибки во взаимодействии между различными компонентами.
Поэтому первым шагом будет изменение дизайна вашего компонента таким образом, чтобы вы разделяли части вычислений, в которых преобладают вычисления. код из частей с преобладанием взаимодействия. В идеале вы должны получить ряд функций / методов для частей с преобладанием вычислений, которые не взаимодействуют с другими компонентами, так что вы можете протестировать эти функции с помощью модульного тестирования, но без необходимости имитации. В не очень идеальном случае у вас все еще есть некоторые, но только несколько взаимодействий, так что, по крайней мере, усилие по насмешке уменьшается.
Второй тип функций / методов, которые вы получаете после повторного дизайн будет доминировать функции взаимодействия. В идеале функции с доминированием взаимодействия не имеют вычислительного кода, а содержат только взаимодействия с другими компонентами. Тогда для этих функций модульное тестирование не имеет смысла, поскольку единственные ошибки, которые может содержать этот тип кода, это ошибки, такие как вызов функций (или выполнение операций с БД) в неправильном порядке, вызов неправильной функции (или операции с БД), передача аргументов в неправильном порядке, несовместимых аргументов, получение неожиданных данных и т. д. c., и все эти ошибки не могут быть найдены при модульном тестировании, но при интеграционном тестировании.