Aleksey Pleshkov @AlekseyPleshkov
Swift & iOS Developer
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Works in
- Date of birth
- Registered
- Activity
Specialization
Mobile Application Developer
Senior
SWIFT
UIKit
SwiftUI
Golang
PostgreSQL
Docker
Добавил в опрос пункт "Преподавал в прошлом", спасибо за рекомендацию)
Вроде, все ссылки живы. Попробуйте ещё раз
Нет, такой зависимости не должно быть. Для этого делаются глобальные Worker'ы и размещаются в директории Workers для переиспользования в разных сценах (в проекте CleanSwiftTests такой файл есть).
Как пример:
Вы имеете слой Network, который содержит в себе модели, ендпоинты и все необходимое, чтоб отправлять запросы и парсить ответы в модели. Далее, уже на Presentation слое (где у нас Clean Swift), мы через глобальные Worker'ы (если требуется использование на разных сценах) или локальные (если это только для одной сцены) выстраивает запрос (напрямую, если отсутствует отдельный слой Business Logic), обрабатываем его и возвращаем в Interactor через замыкание (или иный способ). Но это в том случае, если запрос нужно объемным способом сформировать или объемным способом обработать ответ. В противном случае, можно обращаться напрямую из Interactor'a (к Network или Business слою).
В случае с Interactor'ом, мы проверяем, было ли обращение к Presenter'у и Worker'у.
— Вызывается Presenter, значит нет запутанной (тупиковой) логики в методе Interactor'a и данные уходят дальше.
— В случае с Worker'ом, мы подставляем тестовый дубль (Spy) для избежания реальных запросов в сеть при тестировании. Так же возвращаем шаблонные данные (вместо реальных из сети), для удобства тестирования работы логики Interactor'a. Так же, без подмены Worker'a, не будет вызываться замыкание, а значит мы не обработаем данные и не передадим их в Presenter. Но это уже от кейсов зависит.
Да, конечно, мы должны проверять результат. Основная задача статьи — показать как это делается с компонентами в Clean Swift, как заменять объекты тестовыми дублями, для чего и к чему это приводит. В полном примере приложения (на GitHub), есть тестирование Presenter'a, где проверяется правильность сортировки и т.д.
Конечно, в крупных проектах все сильно разрастется на любой архитектуре. Для этого сцены можно (даже нужно) бить на контейнеры. По крайней мере в данный момент с разрастанием не сталкивался, но дальше будет видно :)