TDD и VIPER

Preview:

Citation preview

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-модуля

Вопросы?