假设我的 SUT(被测系统)需要在属性包标识符中提供来自infoDictionary
的@"CFBundleIdentifier"
。
- (void)testAppPackageName
{
//fixture code is happening in setUp function
XCTAssertEqualObjects(sut.bundleIdentifier, [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]);
}
问题是[[NSBundle mainBundle] infoDictionary]
在测试环境中返回一个空NSDictionary
,这意味着我在这里测试 nil 等于 nil。此外,此测试闻起来很臭
您将如何测试它?
我现在
使用的解决方案是在构造函数中将 inforDictionary 注入到我的 sut 中
- (void)testAppPackageName
{
//fixture
NSDictionary* appInfo = @{ @"CFBundleIdentifier" : BUNDLE_IDENTIFIER};
sut = [[SomeClass alloc] initWithInfo:appInfo];
XCTAssertEqualObjects(sut.bundleIdentifier, BUNDLE_IDENTIFIER);
}