Web モックの使用

包括的な Web テストサポートを提供するために、TestContext フレームワークには ServletTestExecutionListener があり、デフォルトで有効になっています。WebApplicationContext に対してテストする場合、この TestExecutionListener は、各テストメソッドの前に Spring Web の RequestContextHolder を使用してデフォルトのスレッドローカル状態を設定し、@WebAppConfiguration で構成されたベースリソースパスに基づいて MockHttpServletRequestMockHttpServletResponseServletWebRequest を作成します。ServletTestExecutionListener は、MockHttpServletResponse および ServletWebRequest がテストインスタンスに挿入できることも保証し、テストが完了すると、スレッドローカル状態をクリーンアップします。

テスト用に WebApplicationContext をロードしたら、たとえば、テストフィクスチャをセットアップしたり、Web コンポーネントを呼び出した後にアサーションを実行したりするために、Web モックと対話する必要がある場合があります。次の例は、どのモックをテストインスタンスに自動接続できるかを示しています。WebApplicationContext と MockServletContext は両方ともテストスイート全体でキャッシュされるのに対し、他のモックは ServletTestExecutionListener によってテストメソッドごとに管理されることに注意してください。

  • モックの注入

  • 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

	//...
}