使用 Web Mock

為提供全面的 Web 測試支援,TestContext 框架包含一個 ServletTestExecutionListener,該監聽器預設啟用。在針對 WebApplicationContext 進行測試時,此 TestExecutionListener 會在每個測試方法之前使用 Spring Web 的 RequestContextHolder 設定預設的執行緒區域性狀態,並根據使用 @WebAppConfiguration 配置的基本資源路徑建立 MockHttpServletRequestMockHttpServletResponseServletWebRequestServletTestExecutionListener 還確保 MockHttpServletResponseServletWebRequest 可以注入到測試例項中,並且一旦測試完成,它會清理執行緒區域性狀態。

一旦為測試載入了 WebApplicationContext,您可能會發現需要與 Web 模擬物件互動——例如,設定測試夾具或在呼叫 Web 元件後執行斷言。以下示例顯示了哪些模擬物件可以自動裝配到您的測試例項中。請注意,WebApplicationContextMockServletContext 都會在整個測試套件中快取,而其他模擬物件則由 ServletTestExecutionListener 按每個測試方法進行管理。

  • Java

  • 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

	//...
}
© . This site is unofficial and not affiliated with VMware.