此版本仍在开发中,尚未稳定。如需最新的稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

配置 MockMvcTester

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

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

为了针对特定控制器进行测试而设置 MockMvcTester,请使用以下方法:spring-doc.cadn.net.cn

public class AccountControllerStandaloneTests {

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

	// ...

}
class AccountControllerStandaloneTests {

	val mockMvc = MockMvcTester.of(AccountController())

	// ...

}

通过Spring配置设置MockMvcTester,请使用以下方式:spring-doc.cadn.net.cn

@SpringJUnitWebConfig(ApplicationWebConfiguration.class)
class AccountControllerIntegrationTests {

	private final MockMvcTester mockMvc;

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

	// ...

}
@SpringJUnitWebConfig(ApplicationWebConfiguration::class)
class AccountControllerIntegrationTests(@Autowired wac: WebApplicationContext) {

	private val mockMvc = MockMvcTester.from(wac)

	// ...

}

MockMvcTester 可以将JSON响应体,或JSONPath表达式的结果,转换为您的领域对象之一,只要相关的HttpMessageConverter已注册。spring-doc.cadn.net.cn

如果您使用Jackson将内容序列化为JSON,以下示例注册了转换器:spring-doc.cadn.net.cn

@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)));
	}

	// ...

}
@SpringJUnitWebConfig(ApplicationWebConfiguration::class)
class AccountControllerIntegrationTests(@Autowired wac: WebApplicationContext) {

	private val mockMvc = MockMvcTester.from(wac).withHttpMessageConverters(
		listOf(wac.getBean(AbstractJackson2HttpMessageConverter::class.java)))

	// ...

}
上述假设转换器已作为Bean注册。

最后,如果你手边有一个MockMvc实例,你可以通过提供要使用的MockMvc实例,使用create工厂方法创建一个MockMvcTesterspring-doc.cadn.net.cn