我们一直在使用OCMock进行单元测试,效果非常好。 我们只是不确定它是如何工作的。猴子补丁?预处理代码生成?
我试过谷歌搜索没有成功。
任何人都知道OCMock如何做到这一点?
答案 0 :(得分:1)
例如,正常模拟的方法,OCMock使用forwardInvocation:
和朋友。这类似于其他语言中缺少的动态代理或方法。有关详细信息,您可以从以下代码开始:
对于类方法和部分模拟,OCMock使用猴子修补。在运行时,它会创建类(对于部分模拟)或元类(对于类方法)的动态子类,然后将动态类切换为使用。代码入口点:
为了设置模拟和存根,OCMock严重依赖于C宏。它使用块的巧妙技巧来实现带点和圆括号的语法。我第一次在Expecta看到了这个。