java - 如何将InputStream转换为FilePart?

标签 java spring-boot kotlin spring-webflux

我正在尝试测试这个简单的功能,该功能从 Controller 接收文件并从中提取电子邮件。

    fun extractEmailsFromFile(file: Mono<FilePart>, emailsPerFileLimit: Int): Flux<String> {
        return file
                .flatMap { readFileContent(it) }
                .flatMapMany { textContent -> extractAndValidateEmails(textContent, emailsPerFileLimit) }
    }

为了进行单元测试,我想将一个文件放在资源文件夹中并读取它。我如何转换这个输入流:

javaClass.getResourceAsStream("/upload/emails.csv")

在 FilePart 中作为参数传递到我的测试中?

最佳答案

您可以尝试此行:

getClass().getClassLoader().getResourceAsStream("upload/emails.csv")

此外,在使用 JUnit 的单元测试中,如果需要,您可以使用 TemporaryFolder 规则创建临时文件夹和文件。这非常有用。欲了解更多信息:https://junit.org/junit4/javadoc/4.12/org/junit/rules/TemporaryFolder.html

关于java - 如何将InputStream转换为FilePart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661404/

相关文章:

java - JAXB 强制命名空间 URI - 为什么它期望某些命名空间,即使它没有定义?

java - 您是否应该为 Java 枚举定义一个空值/未知值?

java - 如何结合 AngularJS 和 Thymeleaf 模板

java - Spring Boot JAR 应用程序未从资源文件夹中读取 chromedriver.exe

android - 如何发送包含字符串数组和文件数组的多部分

java - Libgdx 补间无法在 Android 上运行

java - 数组数组(二维数组)没有像我想要的那样在 TextView 中打印。

java - 使用 Spring Cloud 从微服务访问外部 IP

java - 将对象写入 Flux

android - Timer() fixedRateTimer 设置为 20 秒不会在触发 onStop 时停止