对静态类进行了两次调用以获取对象。如下所示:
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创建多个返回对象?
答案 0 :(得分:3)
当您使用相同参数执行多个存根时,每个存根都会覆盖前一个存根。当你打电话
when(static1.method(param1, param2, param3).thenReturn(myobj2);
这会覆盖之前返回static1.method(param1, param2, param3)
的{{1}}的存根。
为了在myobj1
的每次调用中返回不同的返回值,您需要链接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
。