【发布时间】:2014-12-08 19:28:31
【问题描述】:
我已经开始测试我的 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>)
)
【问题讨论】:
标签: ios unit-testing core-data