gpt4 book ai didi

ios - 使用 Kiwi、Core Data 和 Magical Record 进行单元测试

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:33 25 4
gpt4 key购买 nike

我在使用“假”商店进行单元测试时遇到问题。我通过将其框架文件夹添加到我的项目并将 Xcode 的默认测试用例替换为 Kiwi 测试来安装 Kiwi。这些都运行良好。

因为我使用的是 Core Data,所以我需要创建一个“假”存储,以便我使用真实的数据库。我用了http://www.cimgf.com/2012/05/15/unit-testing-with-core-data/作为我执行此操作的基本指南。

但是,由于 Xcode 的默认测试实现在启动应用程序后运行测试,所以在任何测试运行之前,我的“[MagicalRecord setupCoreDataStackWithStoreNamed:@"Store.sqlite"]”仍然在 App Delegate 中被触发。

当测试尝试使用“[MagicalRecord setupCoreDataStackWithInMemoryStore]”时,此 sqlite 存储已设置,因此未设置内存存储(AFAIK),因为上述设置堆栈方法首先检查查看堆栈是否已经存在,如果存在则不执行任何操作就返回,所以我最终仍然使用 sqlite 数据库。

据我所知,这给我留下了以下选择:

  1. 为测试用例放入一些环境变量或标志,并在应用程序委托(delegate)中检查这些,根据此变量创建适当的商店(即为了测试而调整我的实际代码 - 不漂亮,也不推荐任何练习 TDD/BDD 的人)。
  2. 在我的所有 Controller 上添加托管上下文属性,以便我可以手动指定要使用的存储(删除 MagicalRecord 单例访问模式的大量细节)。
  3. (小心地)使用我的实际数据库(我什至不愿意考虑这个)。

这些似乎都不是特别好的解决方案,所以我希望有人能看到我愚蠢地忽略的更好的解决方案。

最佳答案

您的测试不应启动应用委托(delegate)。尝试设置您的测试,以便只有测试设置内存中的核心数据存储,如您引用的文章中所建议的那样。

关于ios - 使用 Kiwi、Core Data 和 Magical Record 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15969058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com