objective-c - OCMock 不 stub NSBundle 方法

标签 objective-c unit-testing nsbundle xctest ocmock

我最近使用 OCMock 进行单元测试。我需要 stub objectForInfoDictionaryKey: 来自 NSBundle 的方法。我做了以下事情:

self.bundleMock = OCMClassMock([NSBundle class]);
OCMStub([self.bundleMock objectForInfoDictionaryKey:@"GITHash"]).andReturn(@"c424242");
;

这是我想要 stub 的调用:

NSString * appHashString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GITHash"];

但似乎没有任何东西被 stub ,在运行时我仍然有“正确”的值。

我做错了什么?

最佳答案

我可能记错了,但我认为你需要使用 partialMockForObject 来模拟 [NSBundle mainBundle] 返回的实例,而不是模拟类 NSBundle 因为 objectForInfoDictionaryKey 是实例方法,而不是类方法。

关于objective-c - OCMock 不 stub NSBundle 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609842/

相关文章:

iphone - NS无效参数异常 : Illegal attempt to establish a relationship between objects in different contexts

iphone - 设置位于导航/选项卡栏之间的 UIScrollView 框架

ios - 从 layoutSubviews 访问上一个单元格

unit-testing - 基于属性的测试会让你重复代码吗?

iphone - 更改当前 iphone 应用程序的区域设置(NSBundle 的自定义区域设置?)

objective-c - iOS6:CBPeripheral 在连接时被释放

Mysql2 响应不适用于 Ruby 中的收集方法

java - Junit 测试无法使用 LocalServiceTestHelper 访问文件系统

iphone - 能够从应用程序包中加载文件,但不能从测试应用程序包中加载文件

objective-c - 不能调配类方法