我尝试了存根AuthorizationStatus,但无论我做什么,它都会返回kCLAuthorizationStatusResticted。
OCMStub([CLLocationManager authorizationStatus]).andReturn(kCLAuthorizationStatusAuthorizedAlways);
我做错了什么?
答案 0 :(得分:2)
通常,您不会发送存根调用实际类或实例。在这种情况下,当您应该在模拟上存根调用时,您正在对类调用存根。您将不得不创建一个类mock,然后在mock上存根方法调用。
一个简单的例子:
id locationManagerMock = OCMClassMock([CLLocationManager class]);
OCMStub([locationManagerMock authorizationStatus]).andReturn(kCLAuthorizationStatusAuthorizedAlways);
// Now this will pass!
XCTAssertEqualObjects([CLLocationManager authorizationStatus], kCLAuthorizationStatusAuthorizedAlways);
如果您想了解更多信息,可以在OCMock的Mocking class methods参考资料中找到一个几乎相同的示例和稍微深入的解释。参考文献中的部分有点简短,但尽管如此,它简明扼要地解释了框架以及何时应该使用它。