Вы не задаете правильный вопрос здесь.С точки зрения модульного тестирования вы не должны знать / заботиться о том, чтобы тестируемый метод вызывал другие методы, или даже если другие методы существуют.
Модульные тесты должны подтверждать некоторые наблюдаемые результаты тестируемого метода.Все, что происходит внутри тестируемого метода, не имеет значения в контексте модульного теста.
Это потому, что модульные тесты должны проверять, что модуль ведет себя так, как ожидалось, то есть они должны проверяться на соответствие спецификациям, а не на реализацию.
Давайте рассмотрим простой пример, модульное тестирование функции isPrime(n)
.Если вы не проводите тестирование производительности, вам нужно только, чтобы функция возвращала соответствующий результат для пары чисел.Вам все равно, проверяет ли функция все возможные делители, использует ли она базу данных всех известных простых чисел или делегирует первичную проверку какой-либо сторонней библиотеке / службе.
Ситуация не оченьотличается от твоего.Тот факт, что три метода вызываются в определенном порядке, должен быть подтвержден через внешний интерфейс тестируемого устройства.Например, если три метода совершают вызовы API, затем смоделируйте клиент API и ожидайте, что он будет запрошен три раза, и с ожидаемым URL / полезной нагрузкой.Если вызов этих трех методов не приводит к каким-либо заметным изменениям, то с самого начала вы можете протестировать немногое, поэтому снова тот факт, что три метода вызываются в определенном порядке, становится неактуальным.
Модульное тестированиео проверке результата выполнения этого блока, а не о чем-то большем.Теперь в императивном языке программирования функции input-> output составляют меньшинство, однако это не означает, что мы не можем косвенно проверить, работает ли функция, как ожидалось.Вы можете использовать макеты или проверить некоторые свойства объекта после выполнения функции.Опять же, если нет способов внешней проверки порядка методов, то у вас нет спецификации для проверки.