java - 使用 @Capture Mockito 进行测试时出现问题

标签 java junit5

我正在尝试使用 junit 测试 SftpSession.read 方法,我不太确定测试此方法的方法是什么,我正在使用 @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();
        }
    }

最佳答案

你可以这样做:

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

关于java - 使用 @Capture Mockito 进行测试时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59777445/

相关文章:

java - 地理围栏 : GoogleApiClient is not connected yet

java - JUnit 5 测试

java - 无法使用 Maven 运行 JUnit5 测试

java - 使用来自 mockito-junit-jupiter 的 MockitoExtension 在构造函数测试类中进行空模拟

spring-boot - 无法使用 spring boot gradle 插件执行依赖管理的 junit5 测试

java - 在虚拟机中从 Linux 启动 Windows 程序。

java - 使用 cxf web 服务上传大文件时出现内存不足错误

java - JSF2如何从不同的页面更新不同的组件

java - 如何在 Spring Boot 中将 @MockBean 与 JUnit 5 一起使用?

java - @PreAuthorize 不起作用 - 是否存在无法解析的循环引用?