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 方法。
我最近使用 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 方法。