Резервное копирование CoreData перед модульным тестом - PullRequest
1 голос
/ 12 декабря 2011

Для моего приложения я использую модель MVC-Store.

Класс DataStore содержит одноэлементный объект по умолчанию, который содержит данные для приложения. Все работает хорошо, но у меня есть некоторые проблемы с моими модульными тестами, потому что я не хочу, чтобы мои тесты испортили данные.

Я бы хотел сделать следующее, но не знаю как:

- (void)setUp
{
    [super setUp];

    //Backup my data
    //Clear coredata
}

- (void) testCreateSomeData
{
    //..Create some data, add it to the store, do some tests, etc..
}    

- (void)tearDown
{
    Put back my original data
    [super tearDown];
}

Кстати, метод init в хранилище данных выглядит следующим образом, может быть, это поможет.

- (id) init
{
    //If we allready have a singleton object
    if(defaultStore){
        return defaultStore;
    }
    self = [super init];

    // Read in our .xcdatamodel file
    model = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

    NSPersistentStoreCoordinator *psc =
    [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];

    NSString *path = pathInDocumentDirectory(@"store.data");
    NSURL *storeURL = [NSURL fileURLWithPath:path];
    NSError *error = nil;

    if (![psc addPersistentStoreWithType:NSSQLiteStoreType
                           configuration:nil
                                     URL:storeURL
                                 options:nil
                                   error:&error]) {
        [NSException raise:@"Open failed" format:@"Reason: %@", [error localizedDescription]];
    }

    // Create the managed object context
    context = [[NSManagedObjectContext alloc] init];
    [context setPersistentStoreCoordinator:psc];
    [context setUndoManager:nil];

    [psc release];
    return self;
}

1 Ответ

2 голосов
/ 12 декабря 2011

Один из вариантов - назначить инициализацию, которая принимает имя файла, а затем передать инициализатору по умолчанию обычное имя файла. Тогда ваши тесты могут создать хранилище данных в отдельном файле, удалив его перед запуском тестов и после, не затрагивая ваши не тестовые данные.

...