JMock 期望 oneOf VS 一个区别

Posted

技术标签:

【中文标题】JMock 期望 oneOf VS 一个区别【英文标题】:JMock expectations oneOf VS one difference 【发布时间】:2015-10-12 13:23:21 【问题描述】:

在 JMock 中使用 one() 或 oneOf() 有什么不同吗? Cheat sheet 说: oneOf = 只需要调用一次。 exact(n).of = 调用恰好是 n 次。注意:一个是精确 (1) 的方便简写。 在测试中我可以看到使用一个,而在其他测试中有一个。问题是这个关键字之间是否有任何区别,或者它意味着同样的事情。 在前面提到的备忘单中也有例子:

oneOf (calculator).add(1, 1); will(returnValue(2));
oneOf (calculator).add(2, 2); will(returnValue(5));

这可能表示 oneOf 意味着我预计可能会调用更多方法 add 并且在这种情况下有两个调用(其中一个是参数 1 和 1,第二个是参数 2 和 2)。 但是,exactly one又名exactly(1).ofexactly one可能意味着,在一种测试方法中,我期望只调用该方法。 也许这只是我对定义的误解。

【问题讨论】:

【参考方案1】:

没有区别。 oneOf(mockObject) 只是 exactly(1).of(mockObject) 的别名。

看看AbstractExpectations.java的源码

【讨论】:

嗯,这终于说得通了 :) 一个是旧的不推荐使用的方法,它可能被重命名为 oneOf 所以 one = oneOf = exact(1).of 并且不应再使用一个。谢谢洛根

以上是关于JMock 期望 oneOf VS 一个区别的主要内容,如果未能解决你的问题,请参考以下文章

我可以模拟超类方法调用吗?

(转)Jmock快速上手教程

怎么mockito方法的内部对象

protobuf“oneof”子protobuf对象指针杀死程序

用于非 protobuf 类的 protobuf `oneof` 功能的 C++ 实现

为啥protobuf序列化“oneof”消息使用if-else