Вопрос проверяет понимание unit-тестирования побочных эффектов и работы с mock-объектами.
Если метод ничего не возвращает, тестируют не результат, а факт вызова. Для этого используется mock или spy-объект. Он фиксирует, был ли вызван метод и с какими параметрами. В тесте проверяется состояние mock после выполнения кода. Это стандартный подход для проверки side effects.
В аналитике почти всегда используются методы без возвращаемого значения, поэтому проверка строится вокруг побочных эффектов.
Важно заранее определить критерий успеха.
Метод аналитики был вызван
Переданы корректные параметры
Вызов произошел нужное количество раз
Возвращаемое значение в этом сценарии не требуется.
Создается тестовый double, который реализует тот же интерфейс.
final class AnalyticsMock: AnalyticsTracking {
var trackedEvents: [String] = []
func track(event: String) {
trackedEvents.append(event)
}
}
После выполнения тестируемого кода проверяется состояние mock.
Количество событий
Название события
Порядок вызовов при необходимости
Методы без возвращаемого значения тестируются через проверку их эффектов. Mock или spy-объект — основной инструмент для таких тестов.