使用 Web Mock

为了提供全面的 Web 测试支持,TestContext 框架有一个ServletTestExecutionListener默认情况下处于启用状态。当针对WebApplicationContextTestExecutionListener使用 Spring Web 的RequestContextHolder以前 每个测试方法并创建一个MockHttpServletRequest一个MockHttpServletResponse和 一个ServletWebRequest基于配置了@WebAppConfiguration.ServletTestExecutionListener还可以确保MockHttpServletResponseServletWebRequest可以注入到测试实例中, 并且,一旦测试完成,它就会清理线程本地状态。spring-doc.cadn.net.cn

一旦你有了WebApplicationContextloaded 进行测试时,您可能会发现 需要与 Web mock 进行交互 — 例如,设置测试夹具或 在调用 Web 组件后执行断言。以下示例显示了 mock 可以自动连接到你的测试实例中。请注意,WebApplicationContextMockServletContext都缓存在测试套件中,而其他 mock 是 按测试方法由ServletTestExecutionListener.spring-doc.cadn.net.cn

@SpringJUnitWebConfig
class WacTests {

	@Autowired
	WebApplicationContext wac; // cached

	@Autowired
	MockServletContext servletContext; // cached

	@Autowired
	MockHttpSession session;

	@Autowired
	MockHttpServletRequest request;

	@Autowired
	MockHttpServletResponse response;

	@Autowired
	ServletWebRequest webRequest;

	//...
}
@SpringJUnitWebConfig
class WacTests {

	@Autowired
	lateinit var wac: WebApplicationContext // cached

	@Autowired
	lateinit var servletContext: MockServletContext // cached

	@Autowired
	lateinit var session: MockHttpSession

	@Autowired
	lateinit var request: MockHttpServletRequest

	@Autowired
	lateinit var response: MockHttpServletResponse

	@Autowired
	lateinit var webRequest: ServletWebRequest

	//...
}