配置 MockMvcTester

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

有关这两种模式的比较,请检查 Setup Options

设置MockMvcTester要测试特定控制器,请使用以下内容:spring-doc.cadn.net.cn

public class AccountControllerStandaloneTests {

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

	// ...

}
class AccountControllerStandaloneTests {

	val mockMvc = MockMvcTester.of(AccountController())

	// ...

}

设置MockMvcTester通过 Spring 配置,使用以下内容: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实例,您可以创建一个MockMvcTester由 提供MockMvc实例以使用createFactory 方法。spring-doc.cadn.net.cn