2014-12-18 1 views
1

давайте говорить, что мы имеем:IOS Киви тест с ошибкой передается через ссылку

- (NSString *)someMethod:(NSString *)input 
{ 
     NSError *error = nil; 
     NSString *result = [otherObject processInput:input error:&error]; 

     if (error == nil) { 
      return result; 
     } 
     else { 
      return nil; 
     } 
} 

Как модульное тестирование я могу с помощью Киви, чтобы проверить, как ведет себя иначе?

Конечно, я мог бы положить что-то неприятное, как input, но я не хочу использовать этот подход. Это единичный тест для метода someMethod:, а не для метода processInput:error: и otherObject - это KWMock. Я пытался использовать класс KWCaptureSpy, или stub: withArguments:, но либо я использовал их неправильно, либо они не являются решением.

С уважением

ответ

0

В какао вы должны проверить, если метод возвращает nil, не проверить error против nil: http://rentzsch.tumblr.com/post/260201639/nserror-is-hard.

Поэтому, возможно, перепишите someMethod, чтобы проверить значение, возвращаемое otherObject, но не error Указатель. Это будет проще протестировать таким образом (вам нужно только вызвать метод stub:andReturn: от KWMock, возвращая либо nil, либо значение, отличное от нуля), и вы будете следовать соглашениям Cococa.