Nasıl birim Temel Veri kullanıyorum şimdi benim modelleri test etmek için?
Bir iphone uygulaması, bir etki alanı modeli kullanarak geliştiriyorum, şimdiye kadar uygulamanın kalıcılık yönü ertelendi. Çekirdek Veri zaten iyi tanımlanmış bir model var ama mevcut birim testleri ile bir sorun haline çalıştırıyorum bu yana gerçekten iyi bir çözüm gibi görünüyor.
İşte ben şimdi ne var basit bir örnek:
- (void)test_full_name_returns_correct_string {
Patient *patient = [[Patient alloc] init];
patient.firstName = @"charlie";
patient.lastName = @"chaplin";
STAssertTrue([[patient fullName] isEqualToString:@"charlie chaplin"], @"should have matched full name");
}
Hastamı nasıl NSManagedObject uzanan nesne ve @ad ve soyad özelliklerini kullanan dinamik bir zamanlar bu işi yapabilir miyim?
Başkasının Çekirdek Veri ile bu tür bir çalışma var? Teşekkürler.
CEVAP
Çekirdek bir Veri yığını, ya da -setUp
Her yöntem veya inşa etmek ve onu yıkmak gerekir. NSInMemoryPersistentStore
kullanarak bir şeyler hızlı ve bellek birim testleri için devam edecektir. @property (nonatomic,retain) NSManagedObjectContext *moc
test çalışmasına bir alt ekleyin. Sonra:
- (void)setUp {
NSManagedObjectModel *mom = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:bundleContainingXCDataModel]];
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
STAssertTrue([psc addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:NULL] ? YES : NO, @"Should be able to add in-memory store");
self.moc = [[NSManagedObjectContext alloc] init];
self.moc.persistentStoreCoordinator = psc;
[mom release];
[psc release];
}
- (void)tearDown {
self.moc = nil;
}
Test yöntemi gibi görünüyor:
- (void)test_full_name_returns_correct_string {
Patient *patient = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.moc];
patient.firstName = @"charlie";
patient.lastName = @"chaplin";
STAssertTrue([[patient fullName] isEqualToString:@"charlie chaplin"], @"should have matched full name");
}
senin varlığın varsayarak Person
olarak adlandırılır. Bir bellek sızıntısı sürümü yöntemi, bu arada; sabırlı olmalı -release
'd non-Çekirdek Veri sürümü (insertNewObjectForEntityForName:managedObjectContext:
döndürür bir autoreleased örneği).
Nasıl terminalden Curl ile JSON veri g...
Nasıl benim sunucu uygulaması JUnit ku...
Nasıl özel yöntemleri, alanları veya i...
bir öğe veri-öznitelik değeri için bir...
Nasıl birim test soyut sınıflar için: ...