मैं एक कस्टम इकाई माइग्रेशन नीति के साथ अपने माइग्रेशन के लिए मैपिंग मॉडल बना रहा हूं, और मैं वास्तव में इस माइग्रेशन के लिए कुछ यूनिट परीक्षण बनाना चाहता हूं। जब मैं ऐप चलाता हूं तो माइग्रेशन सही ढंग से काम करता प्रतीत होता है, लेकिन जब मैं यूनिट टेस्ट के माध्यम से माइग्रेशन चलाता हूं तो मेरी एनएसईएनटीटी माइग्रेशन पॉलिसी सबक्लास विधियों को बिल्कुल नहीं कहा जाता है।मैं कोर डेटा माइग्रेशन का परीक्षण कैसे कर सकता हूं?
मैं एक्सकोड के अंतर्निर्मित ओसीयूनीट फ्रेमवर्क का उपयोग कर रहा हूं।
मेरे परीक्षण कोड:
- (void)test1to2Migration_appIdentifierMoved {
[self createVersion1Store];
// TODO Perform migration
NSManagedObjectModel *version1Model = [self version1Model];
NSManagedObjectModel *version2Model = [self version2Model];
NSError *error = nil;
NSMappingModel *mappingModel = [NSMappingModel
inferredMappingModelForSourceModel:version1Model
destinationModel:version2Model error:&error];
STAssertNotNil(mappingModel, @"Error finding mapping model: %@", error);
NSMigrationManager *migrationManager =
[[[NSMigrationManager alloc]
initWithSourceModel:version1Model
destinationModel:version2Model]
autorelease];
BOOL migrationSucceeded =
[migrationManager migrateStoreFromURL:self.version1StoreURL
type:NSSQLiteStoreType
options:nil
withMappingModel:mappingModel
toDestinationURL:self.version2StoreURL
destinationType:NSSQLiteStoreType
destinationOptions:nil
error:&error];
STAssertTrue(migrationSucceeded, @"Error migrating store: %@", error);
// TODO Verify appIdentifier is moved from Project to its Tests
[self deleteTempStores];
}
मेरे मानचित्रण मॉडल है कि -createRelationshipsForDestinationInstance:entityMapping:manager:error:
पद्धति निर्धारित करता है एक कस्टम NSEntityMigrationPolicy निर्दिष्ट करता है, लेकिन मेरी नीति इकाई परीक्षण से कहा जाता है कभी नहीं है। जब मैं माइग्रेशन चलाता हूं, मॉडल को नए संस्करण में संशोधित किया जाता है - अपेक्षित गुण सही जगहों पर दिखाई देते हैं।
कोई विचार मैं यूनिट परीक्षण में काम करने के लिए अपनी माइग्रेशन नीति कैसे प्राप्त कर सकता हूं?