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

В моем дневном задании я был испорчен с Mockito never() проверка, которая может подтвердить, что ложный метод никогда не называют.

Там некоторый путь состоит в том, чтобы выполнить то же самое с помощью 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!");
}

33
задан Justin Voss 2 May 2010 в 20:33
поделиться

1 ответ

Насколько я знаю, OCMock автоматически завершает работу, если вы вызываете verify и были вызваны методы, которые не были записаны. Макет, который не будет жаловаться, если будут вызваны неожиданные методы, называется "хорошим макетом".

- (void)testSomeMethodIsNeverCalled {
    id mock = [OCMockObject mockForClass:[MyObject class]];

    [mock forbiddenMethod];
    [mock verify]; //should fail
}
19
ответ дан 27 November 2019 в 17:41
поделиться