spring-mvc – Spring MVC集成测试 – 如何查询请求映射路径?

我们有一些控制器,比如说:

@Controller
@RequestMapping("/api")
public Controller UserController {

    @RequestMapping("/users/{userId}")
    public User getUser(@PathVariable String userId){
        //bla
    }
}

我们有一个集成测试,比如说:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringApplicationConfiguration(classes= MyApp.class)
@IntegrationTest("server:port:0")
public class UserControllerIT {

    @Autowired
    private WebApplicationContext context;

    @Test
    public void getUser(){
        test().when()
                .get("/api/users/{userId}", "123")
                .then()
                .statusCode(200);
    }
}

我们怎样才能避免在测试中对“/ api / users / {userId}”进行硬编码?我们如何按名称查找请求映射.上述请求映射的默认名称应为UC#getUser

我见过的唯一的东西就像MvcUriComponentsBuilder,它似乎要求它在请求的上下文中使用(因此它将在.jsps中用于生成控制器的URL).

处理这个问题的最佳方法是什么?我是否必须在控制器上将映射公开为静态字符串?我宁愿至少避免这种情况.

最佳答案
就像是:

URI location = MvcUriComponentsBuilder.fromMethodCall(on(UserController.class).getUser("someUserId").build().toUri();

转载注明原文:spring-mvc – Spring MVC集成测试 – 如何查询请求映射路径? - 代码日志