Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EasyMock 1 SetDefaultReturn()更改为EasyMock 2 andReturn()时失败_Java_Easymock - Fatal编程技术网

Java EasyMock 1 SetDefaultReturn()更改为EasyMock 2 andReturn()时失败

Java EasyMock 1 SetDefaultReturn()更改为EasyMock 2 andReturn()时失败,java,easymock,Java,Easymock,我遇到了一些EasyMock 1遗留代码,如下所示: service.convertValue("value"); control.setDefaultReturnValue(new Integer(1)); //Run code that calls that method 升级到EasyMock 2时,我将其转换为以下内容(注意setDefaultReturnValue()相当于andReturn().anytime()): 但是现在我得到了错误意外的方法调用convertValue(“1

我遇到了一些EasyMock 1遗留代码,如下所示:

service.convertValue("value");
control.setDefaultReturnValue(new Integer(1));
//Run code that calls that method
升级到EasyMock 2时,我将其转换为以下内容(注意
setDefaultReturnValue()
相当于
andReturn().anytime()
):

但是现在我得到了错误
意外的方法调用convertValue(“123”)

很明显,在原始代码中,
“value”
应该只是一个占位符。但除此之外,为什么这在EasyMock 1中起作用而在EasyMock 2中不起作用?

隐藏在中的是一个单一的背景,可以解释这个问题:

下面的代码将MockObject配置为应答42 voteForRemoval(“Document”)一次,后续调用的-1以及voteForRemoval()的所有其他参数:

(Empahsis矿)

换句话说,
setDefaultReturnValue()
不仅在第一次之后为
voteForRemoval(“文档”)
返回-1,而且在传入任何其他参数时也返回-1。看起来编写您正在查看的测试的人知道这一点,只是认为他会添加一个占位符,而不关心实际参数

EasyMock 2/3代码的等效代码是:

expect(service.convertValue(isA(String.class))).andReturn(new Integer(1)).anyTimes();
EasyMock 2消除了很多这样的模糊性,并迫使开发人员明确定义他们想要的东西。这可能是最好的,因为旧样式可能会出现意外的副作用

mock.voteForRemoval("Document");
control.setReturnValue(42);
control.setDefaultReturnValue(-1);
expect(service.convertValue(isA(String.class))).andReturn(new Integer(1)).anyTimes();