有两个调用静态类来获取对象。如下所示:
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
。