我正在尝试模拟CLBeacon对象,以便测试特定类型信标的应用行为。但是我很难将方法接近度存根以从中返回所需的接近值。
以下是有问题的代码:
id clBeacon = [OCMockObject niceMockForClass:[CLBeacon class]];
[[[clBeacon stub] andReturn:@"2"] major];
[[[clBeacon stub] andReturn:@"0"] minor];
[[[clBeacon stub] andReturnValue: OCMOCK_VALUE(CLProximityNear)] proximity]; // Didn't work
[[[clBeacon stub] andReturn: @""] proximity]; // Didn't work
以上代码在我尝试存根接近响应时引发了以下问题。
Multiple methods named 'proximity' found with mismatched result, parameter or attributes
有人能指出我上面代码的确切问题吗?
问候。
答案 0 :(得分:0)
proximity属性不是字符串,而是CLProximity typedef。
typedef NS_ENUM(NSInteger, CLProximity) {
CLProximityUnknown,
CLProximityImmediate,
CLProximityNear,
CLProximityFar
} NS_ENUM_AVAILABLE_IOS(7_0);
尝试这样的事情:
[[[clBeacon stub] andReturn: @(CLProximityImmediate)] proximity]; // Didn't work
您还应该传入主要和次要值的NSNumber对象而不是字符串
修改强>
你是否也尝试过这样的事情:
id clBeacon = [OCMockObject partialMockForObject:[CLBeacon new]];
答案 1 :(得分:0)
我已经确定了实际问题所在。
所以,我还有另外两个具有邻近属性但类型不同的类(一个是CLProximity,另一个是NSString),所以在选择正确的类时会有冲突。
答案 2 :(得分:0)
您可以使用CLBeacon
而非id
声明。
CLBeacon *clBeacon = [OCMockObject niceMockForClass:[CLBeacon class]];