0

我有一个用于测试目的的宏,它创建一个导航控制器,将其设置为主窗口的根视图控制器,并将正在测试的视图控制器放在导航控制器中。

我还想为每次调用pushViewController:animated:将动画参数更改为NO.

我怎样才能做到这一点?

我尝试使用stub:withBlock:然后调用pushViewController:animated:块内部,视图控制器被推送(params [0])并且没有,但这会导致无限循环。

还有,stub:withArguments:但在那种情况下,我没有对被推送的视图控制器的引用,因为它是一个在多个地方使用的宏。

我能想到的唯一方法是stub:withBlock:在块内使用 and 删除存根并正常调用pushViewController:params[0]:NO,但我找不到删除存根的方法。

有什么帮助吗?

4

1 回答 1

0

Kiwi 的 stubbing 功能并不是真正设计来做到这一点的。

它主要有两个用途:

  • 将被测代码与系统的其余部分隔离(通过用假的替换方法实现)
  • 对系统中对象之间的 API 契约进行断言

如果您想全局更改方法的默认行为,我认为您所追求的是更通用的方法混合解决方案。Kiwi 的存根功能可能部分通过 swizzling 实现,但它是一个更加集中的工具。

于 2014-09-18T21:57:39.813 回答