【发布时间】:2016-01-29 20:36:28
【问题描述】:
所以我发现在编写 XCTest 或 UI 测试时,我无法访问我的应用委托的 MOC。我遇到了某种错误,上面写着“我是 MyAppUITests,我无法访问 MyApp 的东西”。
很酷,没问题,我编写了所有代码来接受任何 MOC,然后在 setup() 中制作了一个模拟 MOC,这样每个 XCTest 都有一个不会触及我的实际数据的新石板。将我的应用导入为可测试。繁荣,一切正常,我不必更改目标,也不必在我的对象中编写任何代码来“强制它为测试工作!”
问题是我不确定如何为 UI 测试和情节提要执行此操作。我的大多数视图控制器都从 viewdidload 中的 appdelegate 获取我的 MOC。我不知道如何告诉它使用模拟 moc,以便每个测试都可以开始干净,并且它不使用我的实际核心数据存储,但在不测试时也能够正常工作。这里的目标是让主应用程序代码知道它正在被测试时没有任何对其的引用。
必须有一种干净的方法来做到这一点,而不会变得丑陋、改变目标等。除了 UI 之外,它可以像我的 XCTests 那样工作。我找到了这个:How to start with empty Core Data for every UI Test Assertion in Swift?,但没有人回答。该用户提出了类似的问题,但我认为采用了错误的方法(清空核心数据而不是使用模拟 MOC)。
想法?
不管怎样,我正在构建一个 Mac 应用程序。
【问题讨论】:
标签: swift core-data xctest moc uitest