ios – 使用OCMockito验证init *中的方法调用

ios – 使用OCMockito验证init *中的方法调用,第1张

概述我想测试我的init *方法是否使用OCMockito调用其体内的其他方法.这是可能的,如果,我该怎么办?让我们说,我想检查是否已调用[self myMethod]. 我一直试图以这种天真的方式做到这一点,但你可以想象,没有成功: it(@"should trigger myMethod", ^{ DetailsView *mockDetailsView = mock([DetailsVi 我想测试我的init *方法是否使用Ocmockito调用其体内的其他方法.这是可能的,如果,我该怎么办?让我们说,我想检查是否已调用[self myMethod].

我一直试图以这种天真的方式做到这一点,但你可以想象,没有成功:

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 *中的方法调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1012744.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存