unit-testing - OCMock 是如何工作的?

标签 unit-testing ocmock

我们一直在使用 OCMock 进行单元测试,它运行得非常好。 我们只是不确定它是如何运作的。猴子补丁?预处理时的代码生成?

我尝试用谷歌搜索但没有成功。

有人知道 OCMock 是如何发挥它的魔力的吗?

最佳答案

对于普通模拟上的实例方法,OCMock 使用 forwardInitation: 和 friend 。这类似于其他语言中缺少的动态代理或方法。有关更多详细信息,您可以从此处的代码开始:

对于类方法和部分模拟,OCMock 使用猴子修补。在运行时,它创建类(对于部分模拟)或元类(对于类方法)的动态子类,然后将动态类切换为使用。代码的入口点:

为了设置模拟和 stub ,OCMock 严重依赖 C 宏。它使用 block 的巧妙技巧来实现带有点和圆括号的语法。我第一次看到这个是在Expecta .

关于unit-testing - OCMock 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38852238/

相关文章:

javascript - 测试传单插件中用于绘制叠加的私有(private)函数(karma/jasmine)

java - 为 Mockito 创建自定义 VerificationMode 类

ios - OCMock:返回与通过参数获取相同的值

ios - OCMock 模拟 UIImagePickerController

objective-c - OCMock 模拟协议(protocol)的静态类方法。

iphone - SentTestCase 不会将 UnitTest 失败突出显示为代码中的错误

java - 如何测试程序已经退出? [J单元]

java - Junit @AfterClass(非静态)

ios - 不使用 OCMClassMock 调用方法

ios - 使用 OCMock 将代码块作为参数的 stub 方法