
我一直试图以这种天真的方式做到这一点,但你可以想象,没有成功:
it(@"should trigger myMethod",^{ DetailsVIEw *mockDetailsVIEw = mock([DetailsVIEw class]); [mockDetailsVIEw initWithFrame:CGRectZero]; [verify(mockDetailsVIEw) myMethod];});解决方法 根据myMethod功能,有三种可能性. 从init移出myMethod调用
如果myMethod意识到对象的非常具体的逻辑,它应该由对象的所有者显式调用.除了设置初始状态之外,对象创建不应该做任何事情.然后,如果它不在init中,那么很容易测试.
检查对象的状态
如果’myMethod`以某种方式配置对象,您可以测试其属性或状态,而不是检查方法是否被调用,因为它是次要的 – 最终结果很重要.
测试方法……
最后,如果你真的需要测试myMethod是否被调用,并且以上都不适用(不应该发生),你可以在方法体中设置一个属性self.myMethodCalled = YES.
这非常难看,所以你可以从你的类派生,重写myMethod并在那里设置属性,然后验证这个调用子类的调用(这是不安全和不纯的).
这真的很Hacky并且表明从对象设计的角度来看可能是错误的.
@H_301_41@ 总结以上是内存溢出为你收集整理的ios – 使用OCMockito验证init *中的方法调用全部内容,希望文章能够帮你解决ios – 使用OCMockito验证init *中的方法调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)