我已经开始测试我的NSManagedObject子类了,我遇到了一个问题,在其中一个测试用例中保存和获取结果不一致。
我的设置非常简单 - 为了测试,我有一个内存中的持久存储。我通过测试继续参考。
在测试设置上,我清除了持久存储:
- (void)setUp {
[super setUp];
if(!self.manager){
self.manager = [DataManager inMemoryManager];
}
[self.manager.managedObjectContext reset];
}
测试用例很简单: 1.从JSON文件中读取数据,解析并配置我的对象 2.保存 3.对对象的外部ID(应该只有一个)创建获取请求
当自己运行测试用例(或只是那个测试类)时,我得到了1个结果,正如预期的那样。但是,运行所有单元测试和类,它会从fetch中生成3个结果。有时关系很好(通过),有时他们失败(没有关系)。
由于我每次在设置时重置上下文,每次测试都应该有一个空白的平板,不应该吗?
相反,我认为我从另一个测试案例中获取剩余物来污染我的数据样本,但不知道如何修复它。
如果您对获取的结果感兴趣:
<__NSArrayM 0x7f9b2842c650>(
<MyObject: 0x7f9b28435430> (entity: MyObject; id: 0x7f9b28440370 <x-coredata://9CE4448C-6595-47FC-A189-58A83F708D96/MyObject/p11> ; data: {
externalID = 222abc;
theChildren = (
"0x7f9b2843f020 <x-coredata://9CE4448C-6595-47FC-A189-58A83F708D96/ChildObject/p9>",
"0x7f9b2843fec0 <x-coredata://9CE4448C-6595-47FC-A189-58A83F708D96/ChildObject/p12>"
);
}),
< MyObject: 0x7f9b28440c00> (entity: MyObject; id: 0x7f9b28731890 <x-coredata://9CE4448C-6595-47FC-A189-58A83F708D96/MyObject/p5> ; data: <fault>),
< MyObject: 0x7f9b28440c60> (entity: MyObject; id: 0x7f9b28729490 <x-coredata://9CE4448C-6595-47FC-A189-58A83F708D96/MyObject/p3> ; data: <fault>)
)
答案 0 :(得分:0)
setUp
每个测试套件只调用一次,您需要在每次测试前调用reset。我建议切换到Specta并使用它beforeEach
重置。 (example - 虽然没有管理对象竞赛)