У меня есть метод, который запускает асинхронный запрос в модели и передает блок, который обрабатывает ответ:
[user loginWithEmail:self.eMailTextField.text
andPassword:self.passwordTextField.text
block:^(UserLoginResponse response) {
switch (response) {
case UserLoginResponseSuccess:
{
// hooray
break;
}
case UserLoginResponseFailureAuthentication:
// bad credentials
break;
case UserLoginResponseFailureB:
// failure reason b
break;
default:
// unknown error
break;
}
}];
Вызываемый метод устанавливает некоторые параметры для запроса и использует AFNetworking для его запуска.
Теперь я хочу написать модульный тест, чтобы убедиться, что вызывающий класс реагирует правильно для каждого возможного UserLoginResponse.Я использую Kiwi для тестирования, но я думаю, что это больше общий вопрос ...
Как бы я посмеялся над аргументом, который передается в блок от объекта пользователя?Единственный способ, которым я могу придумать, - это смоделировать базовый запрос и вернуть код состояния, который я ожидаю для теста.Есть ли лучший способ?
Можно также заменить блок с помощью делегата, но я бы определенно предпочел использовать блоки здесь.