Проблемы тестирования с @Capture Mockito - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь протестировать метод SftpSession.read с помощью junit, я не совсем уверен, каков способ тестирования этого метода, я использую @Captor, но у меня нет четкого понимания того, могу ли я реализовать этот тест. Это код моего теста:

@Test
void getFileContent() throws IOException {
    String directory = "testDirectory";
    String fileName = "testFileName";
    ByteArrayOutputStream fileByteStream = new ByteArrayOutputStream();

    given(sessionFactory.getSession()).willReturn(sftpSession);

    sftpServiceImpl.getFileContent(directory, fileName);

    verify(sftpSession, times(1)).read(captor.capture(), eq(fileByteStream));
}

Это метод getFileContent:

@Override
    public byte[] getFileContent(String directory, String fileName) throws IOException {
        try (SftpSession session = sessionFactory.getSession()) {
            ByteArrayOutputStream fileByteStream = new ByteArrayOutputStream();
            session.read(directory + "/" + fileName, fileByteStream);
            return fileByteStream.toByteArray();
        }
    }

1 Ответ

1 голос
/ 17 января 2020

Вы можете сделать это:

verify(sftpSession, times(1)).read(any(String.class), any(ByteArrayOutputStream.class));

или

verify(sftpSession, times(1)).read(argThat (arg -> arg.contains(directory) && arg.contains(fileName) ), argThat (arg -> arg != null));
...