問題:ユニットテストの実行中にNSBundleから取得する(null)
と、実行時に有効なオブジェクトが返されます。
私が何をした ?
私は同様の問題、アップルの開発者および他のオンラインリソースでこの問題についてSOを検索しましたが、運がありませんでした。
私はSOの質問から解決策を試しました。OCUnit&NSBundle、NSBundlepathForResourceはnilを返します。
私がオンラインで行ったすべてのソリューションは、実行時とテストのバンドルが異なることを指摘しています。
それらのすべては持っていることをお勧めします
[NSBundle bundleForClass: [self class]];
それ以外の
[NSBundle mainBundle];
質問:上記の修正がセッターインジェクションによるものなのか、ソースファイル自体によるものなのかわかりません。?メソッドをテストする他の方法はあります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");
}