我想在iOS项目中采用BDD方法进行单元测试,我只是意识到可能没有现有的库提供test spy种类的测试双打。理想情况下,我正在寻找与Mockito,Jasmine或RR类似的内容。
在我开始花一个星期的空闲时间编写测试间谍库之前,我想我先在SO上提出问题。
到目前为止,我已经查看了OCMock和Kiwi,但它们似乎都是传统的high-specification-by-default mocking frameworks,需要在arrange phase, prior to the act phase中设置期望断言。显然,这妨碍了我对美丽的DRY嵌套规范的看法(我计划在Kiwi或Cedar中创作。)
答案 0 :(得分:2)
刚看到这个。
奇异果现在绝对不会这样做。你是对的,其中的模拟是在行为阶段之前为“标准”安排而建造的。
继续前进,虽然乍一看,似乎添加间谍功能的基础知识不需要太多的再造。进入模拟的每条消息(除了一些实现重要的保留选择器)都会通过-[KWMock forwardInvocation:]
。
本质上,需要修改当前-[KWMock forwardInvocation:]
来记录/复制通过它的所有调用,而不是现在的调用。这将是原始功能,通过查询记录的调用,可以在以后验证期望。当然,提出一个很好的可读形式进行验证也不是一件轻而易举的事。
间谍/模拟仍然需要知道它所代表的类/协议。这样就可以为发送给它的消息选择器生成有效的方法签名,允许运行时转发机制生成将被转发的实际NSInvocation。
我现在专注于其他事情以获得实施,但我很乐意回答更多问题或合并任何拉动请求。 HTH。