gpt4 book ai didi

objective-c - 单元测试前备份CoreData

转载 作者:行者123 更新时间:2023-11-29 11:18:14 25 4
gpt4 key购买 nike

对于我的应用程序,我使用的是 MVC 商店模型。

DataStore 类包含一个单例对象 defaultstore,它包含应用程序的数据。一切正常,但我的单元测试遇到了一些问题,因为我不想让我的测试弄乱数据。

我想做以下但我不知道怎么做:

- (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];
}

哦,顺便说一句,DataStore 的 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;
}

最佳答案

一个选项是指定一个带有文件名的初始化程序,然后让默认初始化程序传入普通文件名。然后你的测试可以在一个单独的文件中创建一个数据存储,在运行测试之前和之后删除它,而不触及你的非测试数据。

关于objective-c - 单元测试前备份CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8478347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com