如何更改通过引用传递到 Mockito 中的模拟的对象



给定以下代码

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

如何指示莫克托填充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 或一些可以放入此输出流的数据。这将是更好的设计。

试试这个

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

相关内容

  • 没有找到相关文章

最新更新