GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

Spring REST Docs java.lang.IllegalArgumentException: urlTemplate not found. If you are using MockMvc did you use RestDocumentationRequestBuilders to build the request?

在使用 Spring RESTDocs 时,有如下代码

1
2
3
4
5
6
this.mockMvc
.perform(
get("/books/123/images/5")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(...);

运行正常

当把其中url替换成参数形式,改成如下代码时,

1
2
3
4
5
6
7
8
this.mockMvc
.perform(
get("/books/{bookId}/images/{imageId}",
bookId,
imageId)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(...);

执行时出现错误:

java.lang.IllegalArgumentException: urlTemplate not found. If you are using MockMvc did you use RestDocumentationRequestBuilders to build the request?

这个提示也比较清晰,但对于不太了解 RESTDocs 的初学者,可能会迷惑一会,这是由于,静态方法有2个

1
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

上面这个是MockMvc里提供的,不支持URLTemplate这种形式,下面这个是RESTDocs里提供的,支持URLTemplate这种形式,需要用下面这个

1
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;

替换掉import,倒入正确的get方法即可正常运行。