На мой рабочий день я был испорчен Mockito's never()
verification, что может подтвердить, что метод макета никогда не вызывается.Как использовать OCMock для проверки того, что метод никогда не вызывается?
Есть ли способ сделать то же самое, используя Objective-C и OCMock? Я использовал код ниже, который работает, но это похоже на взлома. Я надеюсь, что есть лучший путь ...
- (void)testSomeMethodIsNeverCalled {
id mock = [OCMockObject mockForClass:[MyObject class]];
[[[mock stub] andCall:@selector(fail) onObject:self] forbiddenMethod];
// more test things here, which hopefully
// never call [mock forbiddenMethod]...
}
- (void)fail {
STFail(@"This method is forbidden!");
}
Это полностью сработало! Я не ожидал, что это будет так просто. Просто чтобы играть адвоката дьявола, как вы думаете, это скрывает намерение теста? –
@ Justin: Ну, это требует от читателя узнать о поведении OCMock в этом случае, что не слишком очевидно. Достаточно добавить комментарий рядом с фиктивным контрольным вызовом, чтобы было ясно, что должно произойти. Например: '// проверка завершается неудачно, потому что мы вызвали неожиданный метод в mock.' –