Mockito重写来自静态类的多个调用的返回值
为获取对象,对静态类进行了两次调用。如下图所示:Mockito重写来自静态类的多个调用的返回值,mockito,powermock,Mockito,Powermock,为获取对象,对静态类进行了两次调用。如下图所示: MyObject myobj1 = Mock(MyObject.class) PowerMock(static1.class) when(static1.method(param1,parame2,param3).thenreturn(myobj1); myobj1.setcontent(inputstream1); MyObject myobj2 = Mock(MyObject.class) when(static1.method(pa
MyObject myobj1 = Mock(MyObject.class)
PowerMock(static1.class)
when(static1.method(param1,parame2,param3).thenreturn(myobj1);
myobj1.setcontent(inputstream1);
MyObject myobj2 = Mock(MyObject.class)
when(static1.method(param1,parame2,param3).thenreturn(myobj2);
myobj2.setcontent(inputstream2);
通过以上调用,我们注意到方法调用响应中设置的内容被inputstream2
的内容覆盖
如何使用Mockito创建多个返回对象?当您使用相同的参数执行多个存根时,每个存根都会覆盖上一个存根。当你打电话的时候
when(static1.method(param1, param2, param3).thenReturn(myobj2);
这将覆盖先前返回的myobj1
的static1.method(param1,param2,param3)
的存根
为了在每次调用static1.method()
时返回不同的返回值,您需要如下链接thenReturn()
调用:
when(static1.method(param1, param2, param3)
.thenReturn(myobj1)
.thenreturn(myobj2);
或者,您可以将其缩写为
when(static1.method(param1, param2, param3)
.thenReturn(myobj1, myobj2);
使用这两种方法之一,第一次调用static1.method()
将返回myobj1
,第二次调用将返回myobj2
因此,当您使用相同的参数执行多个存根时,您的代码应该首先使用
inputstream1
,然后使用inputstream2
。当你打电话的时候
when(static1.method(param1, param2, param3).thenReturn(myobj2);
这将覆盖先前返回的myobj1
的static1.method(param1,param2,param3)
的存根
为了在每次调用static1.method()
时返回不同的返回值,您需要如下链接thenReturn()
调用:
when(static1.method(param1, param2, param3)
.thenReturn(myobj1)
.thenreturn(myobj2);
或者,您可以将其缩写为
when(static1.method(param1, param2, param3)
.thenReturn(myobj1, myobj2);
使用这两种方法之一,第一次调用static1.method()
将返回myobj1
,第二次调用将返回myobj2
因此,您的代码应该首先使用
inputstream1
,然后使用inputstream2
为了能够编译您的代码,我必须解决其中的一些问题:我必须将调用从Mock(MyObject.class)
更改为Mock(MyObject.class)
。行PowerMock(static1.class)
我需要更改为PowerMock.mockStatic(static1.class)
。我需要将thenreturn
-方法更改为thenreturn
。还有一些分号在行尾缺少一个空格。如果您可以更新您的问题,那就太好了。为了能够编译您的代码,我必须解决其中的一些问题:我必须将调用从Mock(MyObject.class)
更改为Mock(MyObject.class)
。行PowerMock(static1.class)
我需要更改为PowerMock.mockStatic(static1.class)
。我需要将thenreturn
-方法更改为thenreturn
。还有一些分号在行尾缺少一个空格。如果你能更新你的问题就太好了。谢谢,这解决了问题。感谢您在这方面的快速帮助。谢谢,这解决了问题。感谢您在这方面的快速帮助。