Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 被动Spring不支持ServerHttpRequest作为REST端点测试中的参数?_Java_Spring_Spring Webflux_Project Reactor - Fatal编程技术网

Java 被动Spring不支持ServerHttpRequest作为REST端点测试中的参数?

Java 被动Spring不支持ServerHttpRequest作为REST端点测试中的参数?,java,spring,spring-webflux,project-reactor,Java,Spring,Spring Webflux,Project Reactor,这个问题非常类似于。除了我使用: org.springframework.http.server.ServerHttpRequest非HttpServletRequest 异常在测试代码中得到。真正的电话有效 代码: @RunWith(SpringRunner.class) @SpringBootTest(类=SecurityTests.SecurityTestsApplication.class) @TestPropertySource(属性={'}) @自动配置WebTestClient 公

这个问题非常类似于。除了我使用:

  • org.springframework.http.server.ServerHttpRequest
    非HttpServletRequest
  • 异常在测试代码中得到。真正的电话有效
  • 代码:

    @RunWith(SpringRunner.class)
    @SpringBootTest(类=SecurityTests.SecurityTestsApplication.class)
    @TestPropertySource(属性={'})
    @自动配置WebTestClient
    公共类安全性测试{
    @试验
    public void myTest(){
    //将请求发送到myUrl并获得500
    }
    }
    @RestController
    @请求映射(“/myPath”)
    公共类MyController{
    @邮戳
    公共方法(ServerHttpRequest请求){
    返回Mono.empty()
    }
    }
    
    例外情况是:

    java.lang.IllegalStateException: Failed to resolve argument 1 of type 'org.springframework.http.server.ServerHttpRequest' on public reactor.core.publisher.Mono<java.lang.Void> MyController$MockitoMock$606550817.myMethod(org.springframework.http.server.ServerHttpRequest)
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.getArgumentError(InvocableHandlerMethod.java:228) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArg(InvocableHandlerMethod.java:223) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$null$1(InvocableHandlerMethod.java:179) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_131]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$resolveArguments$2(InvocableHandlerMethod.java:177) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_131]
            at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_131]
            at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_131]
            at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_131]
            at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_131]
            at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_131]
            at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_131]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArguments(InvocableHandlerMethod.java:183) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            ...
    Caused by: java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.http.server.ServerHttpRequest
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.createAttribute(ModelAttributeMethodArgumentResolver.java:213) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.prepareAttributeMono(ModelAttributeMethodArgumentResolver.java:163) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.resolveArgument(ModelAttributeMethodArgumentResolver.java:117) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArg(InvocableHandlerMethod.java:214) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        ... 227 common frames omitted
    Caused by: java.lang.NoSuchMethodException: org.springframework.http.server.ServerHttpRequest.<init>()
        at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_131]
        at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_131]
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.createAttribute(ModelAttributeMethodArgumentResolver.java:210) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        ... 230 common frames omitted
    
    java.lang.IllegalStateException:未能解析public reactor.core.publisher.Mono MyController$MockitoMock$606550817.myMethod(org.springframework.http.server.ServerHttpRequest)上类型为“org.springframework.http.server.ServerHttpRequest”的参数1
    在org.springframework.web.reactive.result.method.InvocableHandlerMethod.getArgumentError(InvocableHandlerMethod.java:228)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArg(InvocableHandlerMethod.java:223)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$null$1(InvocableHandlerMethod.java:179)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在java.util.Optional.orElseGet(Optional.java:267)~[na:1.8.0131]
    在org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$resolveArguments$2(InvocableHandlerMethod.java:177)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)~[na:1.8.0131]
    在java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)~[na:1.8.0131]
    在java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)~[na:1.8.0131]
    在java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)~[na:1.8.0131]
    在java.util.stream.ReduceOps$ReduceOps.evaluateSequential(ReduceOps.java:708)~[na:1.8.0131]
    在java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)~[na:1.8.0131]
    在java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)~[na:1.8.0131]
    在org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArguments(InvocableHandlerMethod.java:183)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    ...
    原因:java.lang.IllegalStateException:未找到接口org.springframework.http.server.ServerHttpRequest的主构造函数或默认构造函数
    在org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.createAttribute(ModelAttributeMethodArgumentResolver.java:213)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.prepareAttributeMono(ModelAttributeMethodArgumentResolver.java:163)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.resolveArgument(ModelAttributeMethodArgumentResolver.java:117)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    在org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArg(InvocableHandlerMethod.java:214)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    ... 227省略了公共帧
    原因:java.lang.NoSuchMethodException:org.springframework.http.server.ServerHttpRequest。()
    在java.lang.Class.getConstructor0(Class.java:3082)~[na:1.8.0_131]
    在java.lang.Class.getDeclaredConstructor(Class.java:2178)~[na:1.8.0131]
    在org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.createAttribute(ModelAttributeMethodArgumentResolver.java:210)~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    ... 230省略公共帧
    
    您导入了错误的类:

    • org.springframework.http.server.ServerHttpRequest
      用于SpringMVC
    • org.springframework.http.server.reactive.ServerHttpRequest
      用于SpringWebFlux
    java.lang.IllegalStateException: Failed to resolve argument 1 of type 'org.springframework.http.server.ServerHttpRequest' on public reactor.core.publisher.Mono<java.lang.Void> MyController$MockitoMock$606550817.myMethod(org.springframework.http.server.ServerHttpRequest)
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.getArgumentError(InvocableHandlerMethod.java:228) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArg(InvocableHandlerMethod.java:223) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$null$1(InvocableHandlerMethod.java:179) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_131]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$resolveArguments$2(InvocableHandlerMethod.java:177) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_131]
            at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_131]
            at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_131]
            at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_131]
            at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_131]
            at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_131]
            at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_131]
            at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArguments(InvocableHandlerMethod.java:183) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
            ...
    Caused by: java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.http.server.ServerHttpRequest
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.createAttribute(ModelAttributeMethodArgumentResolver.java:213) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.prepareAttributeMono(ModelAttributeMethodArgumentResolver.java:163) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.resolveArgument(ModelAttributeMethodArgumentResolver.java:117) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArg(InvocableHandlerMethod.java:214) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        ... 227 common frames omitted
    Caused by: java.lang.NoSuchMethodException: org.springframework.http.server.ServerHttpRequest.<init>()
        at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_131]
        at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_131]
        at org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver.createAttribute(ModelAttributeMethodArgumentResolver.java:210) ~[spring-webflux-5.0.7.RELEASE.jar:5.0.7.RELEASE]
        ... 230 common frames omitted