2012-05-28 55 views

回答

6

是的。最簡單的辦法是接受什麼:

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

它變得有點棘手,如果你想驗證一個特定塊在傳遞一種選擇是讓你完成處理程序類的屬性,當初始化。初始化類,並直接有測試賽吧:

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

感謝澄清 – kraag22

+1

這將確保存根方法被調用,但實際上並不會做與塊任何傳入,是否正確?有什麼方法可以對block參數做任何事情,特別是運行它嗎?我有一個非常相似的場景,但我希望我的模擬對象運行傳入的塊來完成測試。 – Mike

+1

什麼是版本3的答案? – Bernard