【发布时间】:2019-07-17 20:06:16
【问题描述】:
我正在为一个需要存储在包中的属性列表的类编写一系列单元测试。我在我的单元测试目标中保留了这个属性列表的模拟版本,并将单元测试包注入到类中以便可以读取它。我的单元测试之一是处理找不到文件的情况,所以我只是像这样从包中删除它:
NSString *plistPath = [self.bundle pathForResource:kInAppPurchasesPlistName ofType:@"plist"];
[[NSFileManager defaultManager] removeItemAtPath:plistPath error:nil];
但是,这会导致问题,因为文件现在已从包中删除,即使在测试之间也是如此。如果我正确设置我的测试,这可能不是问题,但随机执行顺序是。
我在单元测试之间“重新创建”包:
- (void)setUp {
[...]
self.bundle = [NSBundle bundleForClass:[self class]];
[...]
}
- (void)tearDown {
[...]
self.bundle = nil;
[...]
}
虽然我怀疑底层捆绑不会通过这样做来更改或重置状态。
完成此任务的最佳方法是什么?总之,我需要一种方法来允许我将一个假文件“注入”到我的类中,该类从包中读取它。我想在某些测试中删除此文件,但要在每次单独测试后完全重置状态。
【问题讨论】:
标签: unit-testing xctest