我如何让OCMock让我在UIKit类上存根类别方法?

Kev*_*lar 6 iphone unit-testing ocmock uikit

我正在尝试在我的应用程序的测试中模拟UITabBarController.我在另一个文件中的其他地方定义的类上有一个类别方法,它在我的测试类中与ocmock一起导入.我正在尝试的是这样的:

- (void) setUp
{
    id mockTabController = [OCMockObject mockForClass:[UITabBarController class]];
    [[[mockTabController stub] andReturn:nil] displayedViewController]; 
    // displayedViewController is the category method
}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做并且测试到达那个存根调用时,我得到一个错误说:

[NSProxy doesNotRecognizeSelector:displayedViewController] called!
Run Code Online (Sandbox Code Playgroud)

是否有一些特定的东西我需要做以允许ocmock识别内置框架类中的类别方法?

Kev*_*lar 16

我解决了这个问题; 具有在其中定义的类类别的文件不在我的项目中的正确目标中.它是主要目标,但不是单元测试目标.将它添加到正确的位置使其工作游泳.

  • 感谢您记录自己的解决方案.它帮助了我:) (3认同)