OCMock不存根NSBundle方法

Loa*_*dex 6 unit-testing objective-c ocmock nsbundle xctest

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

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

这是我想要存根的电话:

NSString * appHashString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GITHash"];
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何东西存在,在运行时我仍然有"正确"的价值.

我做错了什么 ?

bpl*_*urg 6

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