2012-05-28 12 views

Respuesta

6

Sí. La forma más fácil sería aceptar cualquier cosa:

id mockGeocoder = [OCMockObject mockForClass:[CLGeocoder class]]; 
[[mockGeocoder stub] reverseGeocodeLocation:[OCMOCK_ANY] completionHandler:[OCMOCK_ANY]]; 

Se pone un poco más complicado si desea verificar un determinado bloque se pasa Una opción es hacer que el controlador de la finalización de una propiedad de la clase, inicializarlo cuando. usted hace funcionar su clase, y tener el partido de prueba directamente:

// 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]; 
+0

gracias por aclarar – kraag22

+1

Esto asegurará que el método se llama talón, pero en realidad no va a hacer nada con el bloque aprobada en, ¿verdad? ¿Hay alguna forma de hacer algo con el parámetro de bloque, específicamente ejecutarlo? Tengo un escenario muy similar, pero quiero que mi objeto simulado ejecute el bloque pasado para completar la prueba. – Mike

+1

¿Cuál es la respuesta de la versión 3? – Bernard

Cuestiones relacionadas