跳到主要内容

配置 MockMvcTester

DeepSeek V3 中英对照 Configuring MockMvcTester

MockMvcTester 可以通过两种方式之一进行设置。一种方式是直接指向你想要测试的控制器,并以编程方式配置 Spring MVC 基础设施。第二种方式是指向包含 Spring MVC 和控制器基础设施的 Spring 配置。

提示

关于这两种模式的比较,请查看设置选项

要为特定控制器设置 MockMvcTester 进行测试,请使用以下方法:

public class AccountControllerStandaloneTests {

private final MockMvcTester mockMvc = MockMvcTester.of(new AccountController());

// ...

}
java

要通过 Spring 配置设置 MockMvcTester,请使用以下内容:

@SpringJUnitWebConfig(ApplicationWebConfiguration.class)
class AccountControllerIntegrationTests {

private final MockMvcTester mockMvc;

AccountControllerIntegrationTests(@Autowired WebApplicationContext wac) {
this.mockMvc = MockMvcTester.from(wac);
}

// ...

}
java

MockMvcTester 可以将 JSON 响应体或 JSONPath 表达式的结果转换为你的领域对象,前提是相关的 HttpMessageConverter 已注册。

如果你使用 Jackson 将内容序列化为 JSON,以下示例展示了如何注册转换器:

@SpringJUnitWebConfig(ApplicationWebConfiguration.class)
class AccountControllerIntegrationTests {

private final MockMvcTester mockMvc;

AccountControllerIntegrationTests(@Autowired WebApplicationContext wac) {
this.mockMvc = MockMvcTester.from(wac).withHttpMessageConverters(
List.of(wac.getBean(AbstractJackson2HttpMessageConverter.class)));
}

// ...

}
java
备注

上述内容假设转换器已注册为一个 Bean。

最后,如果你手头有一个 MockMvc 实例,你可以通过使用 create 工厂方法提供要使用的 MockMvc 实例来创建一个 MockMvcTester