我正在尝试将单元测试添加到现有的 iOS 应用程序中,其中使用OCMock
.
在这个应用程序中,我们有一堆 CoreData 实体和生成的类。这些类显然包含@dynamic
属性。
我试图存根这些属性之一,如下所示:
self.event = [OCMockObject mockForClass:[ACEvent class]];
[[[self.event stub] andReturn:@"e46e1555-d866-4160-9b42-36d0fb9c29cd"] eventGUID];
关键是,它不起作用。显然是因为@dynamic
默认情况下属性没有实现,并且在这种情况下依赖 CoreData 来提供它。我最终得到一个 NSError:
-[NSProxy doesNotRecognizeSelector:eventGUID] called!
我已经看到了其他问题,通过在协议后面抽象 CoreData 实体来解决这个问题(OCMock with Core Data dynamic properties problem)。但由于这是一个现有的代码库,我没有这个选项,因为我负担不起重构所有内容。
谁能为此提供另一种解决方案?
编辑:作为旁注,我刚刚找到了一个解决方案,但我担心它不能在所有情况下都有效。我所做的是在测试目标中为这些方法提供了一个示例的空实现。它可以工作,但我担心它会破坏其他依赖 CoreData 工作的测试。对此有何见解?