当单元测试使用Core Data存储和加载对象的组件时遇到以下问题:
获取属性设置NSFetchRequest
' resultType
至NSDictionaryResultType
。结果总是空的。虽然有相同组件的其他测试显示的值可用。同样,在正常的App执行期间,获取请求会返回足够的结果。
为了完整性,我可能会评论,对于单元测试,我使用像- (void)setUp
这样的魔法记录设置核心数据(在[MagicalRecord setupCoreDataStackWithInMemoryStore];
中)。然后,我将被测组件的NSManagedObjectContext
设置为[NSManagedObjectContext MR_defaultContext]
返回的组件。创建测试数据后,我调用save来保存上下文。
有两种情况:
A)创建测试数据后调用[componentUnderTest.managedObjectContext save:nil]
或[NSManagedObjectContext MR_saveOnlySelfAndWait]
。然后,当执行有问题的获取请求时,返回的数组为空。
B)在创建测试数据后调用[componentUnderTest.managedObjectContext MR_saveToPersistentStoreAndWait]
。当执行获取请求(executeFetchRequest:error:
)时,抛出以下异常:-[__NSTaggedDate count]: unrecognized selector sent to instance 0xe41b1dde2f600000
注意:我要加载的属性(只有一个)属于NSDate
类型。我已尝试在获取请求实例上通过NSString
设置NSExpressionDescriptions
s,NSPropertyDescription
和propertiesToFetch:
s。结果总是一样的。
答案 0 :(得分:0)
无论出于何种原因,使用[MagicalRecord setupCoreDataStackWithStoreNamed:@"Model"];
初始化核心数据堆栈都可以。