gpt4 book ai didi

ios - NSBundle 在使用 OCUnit 进行单元测试时返回 (null)

转载 作者:行者123 更新时间:2023-11-28 22:37:39 27 4
gpt4 key购买 nike

问题:在运行单元测试时从 NSBundle 检索返回 (null),在运行时返回有效对象。

我做了什么?

我已经搜索过有类似问题的 SO、苹果的开发者和其他在线资源来解决这个问题,但没有成功。

我已经尝试过 SO 问题的解决方案; OCUnit & NSBundle , NSBundle pathForResource returns nil .

我在网上浏览的所有解决方案都指出一件事运行时和测试的捆绑是不同的。

他们都推荐拥有

[NSBundle bundleForClass: [self class]];

代替

[NSBundle mainBundle];    

问题: 我不明白上述修复是通过 setter 注入(inject)还是在源文件本身中进行的。 ?有没有其他方法可以测试 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");
}

最佳答案

bundleForClass: 在测试代码中很重要,以确保您获得应用程序包而不是测试包。您不必在生产代码中这样做。

您的 key @"LookUpIpAdress" 拼写错误。是这个问题吗?

关于ios - NSBundle 在使用 OCUnit 进行单元测试时返回 (null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com