简体   繁体   English

junittest上传java webflux服务

[英]Junittest upload java webflux service

Good night:晚安:

When I try to execute this test, return this error.当我尝试执行此测试时,返回此错误。 java.lang.NullPointerException: at the height of.map(dataBuffer -> { lines below....

Attached Test:附测试:

 @Test
    void testing_1() throws UnsupportedEncodingException {
        FilePart filePart = BDDMockito.mock(FilePart.class);
        BDDMockito.given(filePart.filename()).willReturn("resources/ejemplo.csv");
        Mockito.when(repo.metodo(any())).thenReturn("Abcd");                
        service.importData(filePart);}

Class service: Class服务:

public Flux<String> importData(FilePart filePart) {
        return filePart.content().map(dataBuffer -> { // This line throw NullPointerException
                    byte[] bytes = new byte[dataBuffer.readableByteCount()];
                    dataBuffer.read(bytes);
                    DataBufferUtils.release(dataBuffer);
                    return bytes;})
                .map(t -> {});
}

Maybe do you know any way to mock filePart or filePart.content()?也许您知道模拟 filePart 或 filePart.content() 的方法吗?

Try this out.试试这个。

    byte [] dataBufferBytes =  // define your test byte array data here. 
    DataBuffer dataBuffer = Mockito.mock(DataBuffer.class);
    doReturn(dataBuffer).when(filePart).content();
    doReturn(dataBufferBytes).when(dataBuffer).readableByteCount();

Besides that, I don't think this test will execute in this way in WebFlux.除此之外,我认为这个测试不会在 WebFlux 中以这种方式执行。 There is a different test framework all together for testing reactive streams known as reactor-test .有一个不同的测试框架用于测试反应流,称为reactor-test Try using StepVerifier from that framework.尝试使用该框架中的StepVerifier

You can find some examples here你可以在这里找到一些例子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM