Не могу загрузить файлы из NSBundle в тестовом модуле iphone
Я использую XCode 4.
Может кто-нибудь объяснить мне, почему, когда я написал модульный тест (в соответствии с целью тестирования), он не может найти мой локальный файловый ресурс? Я пытаюсь загрузить файл plist из NSBundle в модульном тесте, но он не работает в цели модульного теста. Я попытался бросить его под область классов цели теста.
Вот мой код:
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"urlMappings.plist"];
self.urlMappings = [NSDictionary dictionaryWithContentsOfFile:finalPath];
self.urlMappings по какой-то причине пуст, хотя urlMappings.plist определенно существует в моем проекте. Вот источник urlMappings.plist, чтобы доказать, что это на самом деле словарь.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>%server%view.html</key>
<string>testHtml1.html</string>
</dict>
</plist>
Есть идеи? Спасибо
2 ответа
Под целью теста вы не должны использовать [NSBundle mainBundle], потому что это основной пакет, а не тестовый пакет. Вы должны использовать [NSBundle bundleForClass:[self class]] replace.
Решение (которое не имеет смысла) состоит в том, что его не было в пакетных ресурсах основной цели. Он должен быть в комплекте ресурсов обоих целей, хотя я использую его только в тесте.
Кто-нибудь знает, почему это так?