带有代码块的存根方法作为OCMock的参数

有没有一种方法来存根方法,这是因为它的参数块? 例如mehod:

- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler; 

是。 最简单的方法是接受任何事情:

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

如果你想validation一个特定的块是否被传入,那么它会变得更复杂。一种select是使你的完成处理器成为你的类的一个属性,当你初始化你的类的时候对它进行初始化,并且让testing直接匹配它:

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