问题:在运行单元测试时从 NSBundle 中检索返回(null)
,在运行时返回有效对象。
我做了什么 ?
我已经搜索了类似问题的 SO、苹果的开发人员和其他在线资源来解决这个问题,但没有运气。
我已经尝试过 SO questions 的解决方案;OCUnit & NSBundle,NSBundle pathForResource 返回 nil。
我在网上浏览的所有解决方案都指出一件事Bundle for run time 和测试是不同的。
他们都建议拥有
[NSBundle bundleForClass: [self class]];
代替
[NSBundle mainBundle];
问题:我不明白上述修复是使用 setter 注入还是源文件本身。? 还有其他方法可以测试该方法getIpAdress
吗?
代码
返回(null)的类,
// iRNetworkingObject.m
@implementation iRNetworkingObject
-(NSString*) getIpAdress {
NSDictionary *infoDict = [[NSBundle bundleForClass:[self class]] infoDictionary];
NSString *lookUpAdress = [infoDict objectForKey:@"LookUpIpAdress"];
return lookUpAdress;
}
@end
测试班
- (void) testGetIpAdress {
iRNetworkingObject* networkingObject = [[iRNetworkingObject alloc] init];
NSString* testCase = @"192.168.2.1";
NSString* encondedString = [networkingObject getIpAdress]];
STAssertTrue([testCase isEqualToString:encondedString], @"Not equal");
}