Mockito 覆盖来自静态类的多个调用的返回值



有两个调用静态类来获取对象。如下所示:

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);

这将覆盖之前返回myobj1static1.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

相关内容

  • 没有找到相关文章

最新更新