SORU
4 Aralık 2009, Cuma


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
4 Aralık 2009, Cuma


Ç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).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • How Things Are Made

    How Things A

    17 HAZİRAN 2008