OCMock 不存根 NSBundle 方法

OCMock doesn't stub NSBundle method

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

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

这是我要存根的电话:

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

但似乎没有任何东西被存根,在运行时我仍然有 "correct" 值。

我做错了什么?

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