An meinem Tagesjob wurde ich mit Mockito's never()
verification verwöhnt, was bestätigen kann, dass eine Scheinmethode nie aufgerufen wird.Wie kann ich mit OCMock überprüfen, dass eine Methode nie aufgerufen wird?
Gibt es eine Möglichkeit, dasselbe mit Objective-C und OCMock zu erreichen? Ich habe den Code unten verwendet, der funktioniert, aber es fühlt sich an wie ein Hack. Ich hoffe, dass es eine bessere Art und Weise ...
- (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!");
}
die völlig funktioniert! Ich habe nicht erwartet, dass es so einfach ist. Willst du den Advokaten des Teufels spielen, denkst du, das verbirgt die Absicht des Tests? –
@Justin: Nun, es erfordert, dass der Leser über OCMocks Verhalten in diesem Fall Bescheid weiß, was nicht allzu offensichtlich ist. Ein Kommentar direkt neben dem Scheinprüfungsaufruf sollte ausreichen, um klarzustellen, was passieren soll. Wie: '// Verify sollte fehlschlagen, weil wir eine unerwartete Methode für den Mock aufgerufen haben. –