2015-12-02 6 views
0

Я только начинаю приложение на основе OS X с использованием Core Data. Чтобы проверить мои отношения модели, я хотел бы создать некоторые объекты NSManagedObject, сохранить их в файл и прочитать их обратно в объекте XCTestCase. Используя следующий код, я могу создавать объекты в контексте управляемых объектов, но я не могу понять, как создать функционирующий постоянный координатор хранилища и/или сохранить в файл.Как протестировать NSPersistentDocument в XCTestCase?

class MyTests: XCTestCase { 

    var doc: Document! 
    var moc: NSManagedObjectContext! 
    //...// 

    override func setUp() { 
     super.setUp() 
     doc = Document() 
     moc = doc.managedObjectContext 
    } 

    //...// 
} 
+0

Осознайте, что мои проблемы выписывая в файл были, потому что я получаю 'managedObjectContext' перед установкой координатора упорную магазина через' configurePersistentStoreCoordinatorForURL' – JefferyRPrice

ответ

0

Проблема с моим первым подходом выше, что я получал managedObjectContext перед использованием configurePersistentStoreCoordinatorForURL. Как только я решил, решение было довольно простым.

class DocTests : XCTestCase { 

    let testFileURL = NSURL.fileURLWithPath("/Users/Me/Temp/DocTests", isDirectory: false) 

    override func setUp() { 
     super.setUp() 
    } 

    func testWriteAndRead() { 

     writeSimpleTestDocument() 

     let doc = Document()   
     do { 
      try doc.readFromURL(testFileURL, ofType: "mydoctype") 
     } catch let error as NSError { 
      print("Failed to read, \(error), \(error.userInfo)") 
     } 

     let moc = doc.managedObjectContext! 

     // fetch from moc and verify test entities here ... 
     // ... 
    } 


    func writeSimpleTestDocument() { 

     // if test document exists, delete it 
     let fm = NSFileManager.defaultManager() 

     if fm.fileExistsAtPath(testFileURL.path!) { 
      do { 
       try fm.removeItemAtURL(testFileURL) 
      } catch let error as NSError { 
       print("Failed to remove, \(error), \(error.userInfo)") 
      } 
     } 

     let doc = Document() 

     do { 
      try doc.configurePersistentStoreCoordinatorForURL(testFileURL, ofType: "mydoctype", modelConfiguration: nil, storeOptions: nil) 
     } catch let error as NSError { 
      print("Failed to configure coordinator, \(error), \(error.userInfo)") 
     } 

     let moc = doc.managedObjectContext! 

     // create test entities in moc here ... 
     // ... 

     do { 
      try moc.save() 
     } catch let error as NSError { 
      print("Failed to save, \(error), \(error.userInfo)") 
     } 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^