MockMvc 集成

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

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

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

类似地,如果您编写了与 MockMvc.andExpect 功能一起使用的自定义 matcher,可以通过 .matches 使用它们。在下面的示例中,我们重写了前面的示例,使用 MockMvc 提供的 ResultMatcher 实现来断言状态。

// Static import on MockMvcResultMatchers.status
assertThat(mockMvc.get().uri("/hotels/{id}", 42))
		.matches(status().isOk());

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