跳到主要内容

MockMvc 集成

DeepSeek V3 中英对照 MockMvc integration

如果你想使用 AssertJ 支持,但已经投入了原始的 MockMvc API,MockMvcTester 提供了几种集成方式。

如果你有自己的 RequestBuilder 实现,你可以使用 perform 来触发请求的处理。下面的示例展示了如何使用原始 API 来构建查询:

// Static import on MockMvcRequestBuilders.get
assertThat(mockMvc.perform(get("/hotels/{id}", 42)))
.hasStatusOk();
java

同样地,如果你已经编写了与 MockMvc.andExpect 功能一起使用的自定义匹配器,你可以通过 .matches 来使用它们。在下面的示例中,我们重写了前面的示例,使用 MockMvc 提供的 ResultMatcher 实现来断言状态:

mockMvc.perform(get("/greeting"))
.andExpect(result -> {
assertThat(result.getResponse().getStatus()).isEqualTo(200);
});
java
// Static import on MockMvcResultMatchers.status
assertThat(mockMvc.get().uri("/hotels/{id}", 42))
.matches(status().isOk());
java

MockMvc 还定义了一个 ResultHandler 契约,允许你在 MvcResult 上执行任意操作。如果你已经实现了这个契约,你可以使用 .apply 来调用它。