Sì. Il modo più semplice sarebbe quella di accettare qualsiasi cosa:
id mockGeocoder = [OCMockObject mockForClass:[CLGeocoder class]];
[[mockGeocoder stub] reverseGeocodeLocation:[OCMOCK_ANY] completionHandler:[OCMOCK_ANY]];
Si diventa un po 'più complicato, se si desidera verificare un blocco particolare viene passato Una possibilità è quella di rendere il vostro gestore di completamento di una proprietà della classe, inizializzare quando. si inizializza la classe, e hanno il test match direttamente:
// 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];
fonte
2012-05-29 17:54:22
grazie per il chiarimento – kraag22
Questo farà sì che la stub viene chiamato, ma non sarà effettivamente fare nulla con il blocco passata, giusto? C'è un modo per fare qualcosa con il parametro block, in particolare eseguirlo? Ho uno scenario molto simile, ma voglio che il mio oggetto mock esegua il blocco passato per completare il test. – Mike
Qual è la risposta alla versione 3? – Bernard