gpt4 book ai didi

ios - 使用 OCMock 将代码块作为参数的 stub 方法

转载 作者:可可西里 更新时间:2023-11-01 04:36:22 25 4
gpt4 key购买 nike

有没有一种 stub 方法,将 block 作为参数?例如方法:

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

最佳答案

是的。最简单的方法是接受任何东西:

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

如果你想验证一个特定的 block 是否被传入,它会变得有点棘手。一个选择是让你的完成处理程序成为你的类的一个属性,在你初始化你的类时初始化它,并让测试直接匹配它:

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

关于ios - 使用 OCMock 将代码块作为参数的 stub 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com