Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Spring boot 使用SpringBoot重新加压strage行为_Spring Boot_Rest Assured - Fatal编程技术网

Spring boot 使用SpringBoot重新加压strage行为

Spring boot 使用SpringBoot重新加压strage行为,spring-boot,rest-assured,Spring Boot,Rest Assured,问题陈述-从重新启动的测试用例发送的路径参数接收为空。 API定义如下: @RequestMapping("myapp") public interface MyApi { @GetMapping(path = "getItem/{path1}/{path2}/{path3}") public ResponseEntity<MyResponse> getItem(@PathVariable("path1")

问题陈述-从重新启动的测试用例发送的路径参数接收为空。
API定义如下:

@RequestMapping("myapp")
public interface MyApi {

    @GetMapping(path = "getItem/{path1}/{path2}/{path3}")
    public ResponseEntity<MyResponse> getItem(@PathVariable("path1") String path1,
        @PathVariable("path2") String path2, @PathVariable("path3") String path3);
}

@RestController
public class MyController implements MyApi {

    public ResponseEntity<MyResponse> getItem(String path1, String path2, String path3) {
        return myService.delegateToMethod(path1, path2, path3);
    }

}
存根类的一部分

public MyResponse callGetItem(String param1, String param2, String param3) {
    return given().port(servicePort)
        .pathParam("path1", param1)
        .pathParam("path2", param2)
        .pathParam("path3", param3)
        .when().get("/myapp/getItem/{path1}/{path2}/{path3}")
        .then().statusCode(200)
        .extract()
        .as(MyResponse.class);
}

观察测试断言失败。通过将调试点放在控制器类中,我看到路径值被接收为null
有趣的是如果我将API定义直接放在控制器中,它会工作
免责声明代码为简洁起见,应根据要求在章节上展开。
请求如果重复问题或错误,请求重新指示。

您需要将@RestController放在API定义以及实现控制器上

@RestController
@RequestMapping("myapp")
public interface MyApi {

    @GetMapping(path = "getItem/{path1}/{path2}/{path3}")
    public ResponseEntity<MyResponse> getItem(@PathVariable("path1") String path1,
        @PathVariable("path2") String path2, @PathVariable("path3") String path3);
}

同样的代码,升级到spring boot版本
2.4.5
,工作正常。

尝试将参数值存储在Map对象中,并将其传递给
。pathParams(Map Map)
方法,而不是多次调用同一方法

@RestController
@RequestMapping("myapp")
public interface MyApi {

    @GetMapping(path = "getItem/{path1}/{path2}/{path3}")
    public ResponseEntity<MyResponse> getItem(@PathVariable("path1") String path1,
        @PathVariable("path2") String path2, @PathVariable("path3") String path3);
}
http://localhost:8080/myapp/getItem/{path1}/{path2}/{path3}?path1=v1&path2=v2&path3=v3