tdd и viper
TRANSCRIPT
TDD и VIPER
Станислав Цыганов DevAlloy
Сегодня обсудим
• Что такое TDD?
• Чем VIPER полезен в тестировании?
• Тестирование компонентов VIPER-модуля
TDD
• Разработка через тестирование
• Тесты полностью описывают поведение класса
• Есть статья и выступление Андрея Резанова http://habrahabr.ru/company/rambler-co/blog/263087/
VIPER + TDD = ?
Presentation Level
Buisness Logic Level
Core Level
?
VIPER + TDD = ?
• Тестирование Presentation слоя
• Через тонкий VC к тестируемости
• UI-тестов недостаточно
Общий подход
• Боевой тестируемый компонент
• Окружаем моками
• Вызываем методы интерфейса/реализуемых протоколов
• Проверяем вызов методов моков или изменение свойств
Тестирование View
• IBAction и IBOutlet в .h
• View взаимодействует с Presenter через протокол
• Важно протестировать методы жизненного цикла
Тестирование View
ViewIBAction/IBOutlet <ViewOutput>
ViewIBOutlet <ViewInput>
Тестирование Router
• Тестируем методы переходов
• Тестируем передачу данныхRouter
<RouterInput>
transitionHandler
Тестирование Interactor
• Тестируем проксирование в BL слой и обратно
• Тестируем правильное преобразование моделей
Interactor ServiceMock<InteractorInput>
Interactor<InteractorOutput> Callback
Тестирование Presenter
• Является связующим звеном модуля
• Большая часть тестов проверяет передачу данных из одной части модуля в другую
Presenter <InteractorInput><ViewInput>
<RouterInput>
Тестирование Presenter
• Необходимо учитывать, что P - входная точка
• Необходимо учитывать различные входные параметры
Presenter
<ModuleInput><ViewOutput>
<ViewInput>
Тестирование Assembly
• Проверяем правильную настройку модуля
• Generamba создает практически завершенный набор тестов
Обсудили
• Что такое TDD?
• Чем VIPER полезен в тестировании?
• Тестирование компонентов VIPER-модуля
Вопросы?