如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?
Posted
技术标签:
【中文标题】如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?【英文标题】:How to clone a CoreData SQLite backed persistent store to "in memory"? 【发布时间】:2013-08-13 00:01:32 【问题描述】:我想在内存中创建我的 CoreData 结构(不是数据)的克隆。这将允许我使用新的 CoreData 堆栈编写单元测试,而不必处理当前存储在实际 SQLite 数据库中的数据。
作为旁注,我正在使用 MagicalRecord,这可能有帮助,也可能没有帮助。
我对单元测试的想法如下:
在- (void)setUp
期间打开应用 CoreData 存储 (SQLite)
克隆存储到内存
关闭持久性 SQLite 存储
打开刚刚创建的内存存储
删除内存中的所有数据
运行我的测试
有什么想法吗?还是更好的解决方案?
谢谢
【问题讨论】:
为什么不跳过步骤 1、3、4 和 5?在我看来,它们并不需要。我会在假设您只需要基于您的模型的空商店的情况下写一个答案。 【参考方案1】:MagicalRecord 包含一个名为[MagicalRecord setupCoreDataStackWithInMemoryStore]
的函数。这将根据您的数据模型创建一个内存存储。不需要复制或您提到的任何内容,因为这种类型的存储不是持久的(您说过在实际使用之前无论如何都会将其全部删除)。所以不用担心克隆SQL版本,设置一个内存版本就可以使用了。
【讨论】:
【参考方案2】:我建议遵循我写的这个指南:http://www.cimgf.com/2012/05/15/unit-testing-with-core-data/
它通过内存存储设置堆栈以供单元测试使用。
【讨论】:
以上是关于如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?的主要内容,如果未能解决你的问题,请参考以下文章