Я пишу серию модульных тестов для класса, который требует список свойств, хранящийся в комплекте.Я сохраняю фиктивную версию этого списка свойств в своей цели модульного теста и внедряю комплект модульного теста в класс, чтобы его можно было прочитать.Один из моих модульных тестов касается обработки случая, когда файл не может быть найден, поэтому я просто удаляю его из комплекта следующим образом:
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;
[...]
}
Хотя я подозреваю, что базовый пакет не изменяет и не сбрасывает состояние при этом.
Каков наилучший способ сделать это?Таким образом, мне нужен способ, который позволит мне «вставить» поддельный файл в мой класс, который читает его из пакета.Я хочу удалить этот файл в некоторых тестах, но для полного сброса состояния после каждого отдельного теста.