2015-04-15 10 views

risposta

4

È possibile utilizzare 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); 

Tuttavia, se avete la possibilità di refactoring del codice testato, meglio è quello di rendere cliente restituire l'OutputStream o alcuni dati che possono essere messi a questo flusso di uscita. Questo sarebbe un design molto migliore.

1

provare questo

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