Post

Replies

Boosts

Views

Activity

Reply to Unit testing SwiftData
In my unit tests, I need to insert Foo into a context before I can set the relationship to Bar. If the parent entity does not have a context I see a crash in the getter. let foo = Foo(bar: []) container.mainContext.insert(foo) foo.append(bar: Bar(value: 0)) You will need to mark the test as running on the MainActor to access the mainContext.
Topic: Programming Languages SubTopic: Swift Tags:
Jul ’23
Reply to Swift test with CoreData in a Package
I think the problem you're having is because your package tests are in a different bundle. Packages define a separate test target in the Package.swift manifest. To allow your tests to access resources, like the momd file, you'll need to declare a public symbol for them. This is similar to what you would need to do to access those resources from your app target. For example, in a source file in your Swift package: public static let momURL = Bundle.module.url(forResource: "MyModel", withExtension: "momd") You can then use this to load the MOM in your unit tests: let mom = NSManagedObjectModel(contentsOf: momURL!)
Jul ’21