鉴于以下代码

@Mock
Client client;

ByteArrayOutputStream baos = new ByteArrayOutputStream();
client.retrieveFile(baos); // client is supposed to fill boas with data

我如何指示 Mockito 填充 baos 对象?

最佳答案

您可以使用 Mockitos Answer

doAnswer(new Answer() {
     @Override
     public Object answer(InvocationOnMock invocation) {
         Object[] args = invocation.getArguments();
         ByteArrayOutputStream baos = (ByteArrayOutputStream)args[0];
         //fill baos with data
         return null;
     }
 }).when(client).retrieveFile(baos);

但是,如果您有可能重构已测试的代码,最好让客户端返回 OutputStream 或一些可以放入此 Output 流的数据。这将是更好的设计。

关于java - 如何更改通过引用传递给 Mockito 中的模拟的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29643995/

10-09 15:55