1
對於我的應用,我使用的是MVC-Store模型。在單元測試之前備份CoreData
類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];
}
哦順便說一句,數據存儲的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;
}
感謝stevex,我在單元測試構建方案中添加了一個環境變量var,並檢查了當我加載數據時是否設置了var。如果設置了var,我更改storeURL的路徑並加載一個testStore! – Tieme