Ja. Der einfachste Weg wäre, etwas zu akzeptieren:
id mockGeocoder = [OCMockObject mockForClass:[CLGeocoder class]];
[[mockGeocoder stub] reverseGeocodeLocation:[OCMOCK_ANY] completionHandler:[OCMOCK_ANY]];
Es wird ein bisschen schwieriger, wenn Sie einen bestimmten Block überprüfen möchten, wird in weitergegeben Eine Option ist Ihr Abschluss-Handler eine Eigenschaft Ihrer Klasse zu machen, initialisieren es, wenn. Sie initialisieren Ihre Klasse und haben das Testspiel direkt:
// in your class
@property(copy)CLGeocodeCompletionHandler completionHandler;
// in your class's init method
self.completionHandler = ^(NSArray *placemark, NSError *error) {
//
}
// using the completion handler
[geocoder reverseGeocodeLocation:location completionHandler:self.completionHandler];
// the test
id mockGeocoder = [OCMockObject mockForClass:[CLGeocoder class]];
[[mockGeocoder stub] reverseGeocodeLocation:[OCMOCK_ANY] completionHandler:yourClass.completionHandler];
dank für – kraag22
Klärung Dadurch wird sichergestellt, dass die Stub-Methode aufgerufen wird, aber nicht wirklich mit dem Block alles tun, übergeben, richtig? Gibt es eine Möglichkeit, irgendetwas mit dem Block-Parameter zu tun, insbesondere ihn auszuführen? Ich habe ein sehr ähnliches Szenario, aber ich möchte, dass mein Mock-Objekt den übergebenen Block ausführt, um den Test abzuschließen. – Mike
Was ist die Antwort der Version 3? – Bernard