如何单元测试信息字典行为



假设我的 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);
}

最新更新