我让它工作的方式是将上下文路径作为其余 URI 的一部分包含在内,并在 RequestBuilder 上调用 contextPath。这是工作示例。在我的示例中,“api”是上下文根。我必须将它包含在请求中,并在 RequestBuilder 上调用 contextPath 方法并进行设置。
@Andy Wilkinson:我知道这可能是在重复你所说的,但我认为一个完整的工作示例对于像我这样的人来说会更清楚:)
@RunWith(MockitoJUnitRunner.class)
public class UserControllerTest {
private UserController controller;
private MockMvc mockMvc;
@Rule
public RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets");
@Before
public void setUp() {
controller = new UserController();
mockMvc = standaloneSetup(controller).apply(documentationConfiguration(this.restDocumentation)).build();
}
@Test
public void testUsers() throws Exception {
this.mockMvc.perform(get("/api/users/{userId}","1234").contextPath("/api"))
.andExpect(status().isOk())
.andDo(document("user-information", pathParameters(
parameterWithName("userId").description("user id.")
), responseFields(
fieldWithPath("firstName").description("first name of the user. "),
fieldWithPath("lastName").description("Last name of the user. ")
)))
.andDo(print());
}
}