Comment l'unité de test de mes modèles, maintenant que je suis en utilisant la Base de Données?
J'ai développé une application iphone à l'aide d'un modèle de domaine, et mis la persistance aspect de l'application jusqu'à maintenant. Base de Données ressemble à une très bonne solution puisque j'ai déjà un modèle bien défini, mais je suis en cours d'exécution un hic, mes tests unitaires.
Ici est simple exemple de ce que j'ai maintenant:
- (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");
}
Comment puis-je faire de ce travail une fois que mon Patient objet s'étend à partir de NSManagedObject et utilise @dynamique pour les propriétés firstName et lastName?
Quelqu'un d'autre a rencontré ce type de ce avec la Base de Données? Merci.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour construire une Base de Données de la pile, soit à l'intérieur de chaque méthode ou en
-setUp
et puis la démolir. À l'aide d'unNSInMemoryPersistentStore
garder les choses rapidement et en mémoire pour vos tests unitaires. Ajouter un@property (nonatomic,retain) NSManagedObjectContext *moc
à votre cas de test sous-classe. Alors:Votre méthode de test ressemble alors à:
en supposant que votre entité est nommé
Person
. Il y avait une fuite de mémoire dans votre version de la méthode, par la façon dont le patient doit être-release
'd dans le non-Base de Données version (insertNewObjectForEntityForName:managedObjectContext:
retourne un autoreleased exemple).[mom release]
et[pcs release]
qui dit'release' is unavailable: not available in automatic reference counting mode
. Comment puis-je obtenir autour de cette question?J'ai utilisé la réponse ci-dessus par Barry Wark, mais j'ai dû faire quelques modifications afin de le faire fonctionner avec le courant des projets Xcode 5, iOS 7.
La propriété est restée la même:
L'installation avait effectivement eu à changer tout d'abord de ne pas divulguer et d'autre part de fournir un modèle d'URL.
Voici l'exemple de cas de test: