Last active
November 28, 2023 22:24
-
-
Save succi0303/12aa5da7a21044ad4ba3 to your computer and use it in GitHub Desktop.
SwiftでCoreDataのユニットテストを書くときの注意事項
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import XCTest | |
import CoreData | |
class CoreDataTest: XCTestCase { | |
var managedObjectContext: NSManagedObjectContext? | |
override func setUp() { | |
super.setUp() | |
// 1. Create Managed Object Context | |
let managedObjectModel = NSManagedObjectModel.mergedModelFromBundles([NSBundle.mainBundle()]) | |
let storeCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel!) as NSPersistentStoreCoordinator | |
do { | |
try storeCoordinator.addPersistentStoreWithType(NSInMemoryStoreType, configuration: nil, URL: nil, options: nil) | |
} catch let error as NSError { | |
print("\(error) \(error.userInfo)") | |
abort() | |
} | |
self.managedObjectContext = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType) | |
managedObjectContext!.persistentStoreCoordinator = storeCoordinator | |
} | |
func testModelExists() { | |
// 2. Create Managed Object | |
let entity = NSEntityDescription.entityForName("Model", inManagedObjectContext: managedObjectContext!) | |
let model = Model(entity: entity!, insertIntoManagedObjectContext: managedObjectContext!) | |
XCTAssertNotNil(model) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
SwiftでCoreDataのユニットテストを書くときの注意事項
1. Managed Object Contextの作成
CoreDataの操作をするためにManaged Object Contextの作成が必要である。テストの実施ごとにメモリ上にデータを保持するように、PersistentStoreに
NSInMemoryStoreType
を指定する。参考情報
Managed Objectの生成
Managed Objectを生成する際に、単純に以下のコードを書くとエラーが発生する。
原因は、Swiftでnamespaceが導入されたことであるらしい。
エラーを防ぐために、まず
NSEntityDescription.entityForName
でエンティティを取得し、モデルクラスのイニシャライザを使ってManaged Objectを生成する。参考情報