2012-05-28 16 views

Odpowiedz

6

Tak. Najprostszym sposobem byłoby zaakceptować niczego:

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

robi się nieco trudniejsze, jeśli chcesz, aby sprawdzić dany blok jest przekazywana Jedną z opcji jest, aby Państwa obsługi zakończenia właściwością klasy, zainicjować kiedy. zainicjować swoją klasę i mają test Mecz bezpośrednio:

// 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

dzięki za wyjaśnienie – kraag22

+1

Zapewni to, że metoda en nazywa, ale nie faktycznie nic zrobić z bloku przekazany w, prawda? Czy jest jakiś sposób, aby zrobić coś z parametrem bloku, w szczególności go uruchomić? Mam bardzo podobny scenariusz, ale chcę, aby mój fałszywy obiekt uruchomił blok, który przeszedł, aby ukończyć test. – Mike

+1

Jaka jest odpowiedź w wersji 3? – Bernard