|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
使用Web模拟
为了提供全面的Web测试支持,TestContext框架默认启用了ServletTestExecutionListener。在针对WebApplicationContext进行测试时,这个TestExecutionListener通过使用Spring Web的RequestContextHolder在每个测试方法之前设置默认的线程本地状态,并根据使用@WebAppConfiguration配置的基本资源路径创建MockHttpServletRequest、MockHttpServletResponse和ServletWebRequest。ServletTestExecutionListener还确保MockHttpServletResponse和ServletWebRequest可以注入到测试实例中,并且在测试完成后清理线程本地状态。
一旦你为测试加载了WebApplicationContext,你可能会发现需要与网络模拟进行交互——例如,为了设置测试环境或在调用你的网络组件后执行断言。下面的例子展示了哪些模拟可以自动装配到你的测试实例中。请注意,WebApplicationContext和MockServletContext在整个测试套件中都是缓存的,而其他的模拟则由ServletTestExecutionListener按测试方法进行管理。
-
Injecting mocks
-
Kotlin
@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
//...
}