Итак ... Я пытаюсь настроить модульные тесты в своем приложении для iPhone, но у меня возникли некоторые проблемы. Я пытаюсь протестировать свои классы моделей, но они наследуются напрямую от NSManagedObject. Я уверен, что это проблема, но я не знаю, как обойти это.
Все собирается и работает, как и ожидалось, но я получаю эту ошибку при вызове любого метода в классе, который я тестирую:
Unknown.m:0:0 unrecognized selector sent to instance 0xc2b120
Если я буду следовать этой структуре , чтобы создать свой объект в моих тестах, я получу еще одну ошибку, но она все равно не поможет.
Если я создаю свою модель следующим образом:
entry = [[TimeEntry alloc]
initWithEntity:nil
insertIntoManagedObjectContext:nil];
Тогда я получаю эту ошибку во время выполнения:
An NSManagedObject of class 'TimeEntry' must have a valid NSEntityDescription.
Если я попробую это так:
entry = [[TimeEntry alloc] init];
Тогда я получаю эту ошибку:
unrecognized selector sent to instance 0xc2b120
И если я буду следовать схеме , изложенной здесь :
model = [[NSManagedObjectModel mergedModelFromBundles: nil] retain];
NSLog(@"model: %@", model);
coord = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: model];
store = [coord addPersistentStoreWithType: NSInMemoryStoreType
configuration: nil
URL: nil
options: nil
error: NULL];
ctx = [[NSManagedObjectContext alloc] init];
[ctx setPersistentStoreCoordinator: coord];
entry = (TimeEntry *)[NSEntityDescription insertNewObjectForEntityForName:@"TimeEntry" inManagedObjectContext:ctx];
Тогда я получаю эту ошибку:
could not locate an entity named 'TimeEntry' in this model.
В основном мой вопрос таков: как я могу протестировать класс, который наследуется от NSManagedObject?