Web モックの使用
包括的な Web テストサポートを提供するために、TestContext フレームワークには ServletTestExecutionListener があり、デフォルトで有効になっています。WebApplicationContext に対してテストする場合、この TestExecutionListener は、各テストメソッドの前に Spring Web の RequestContextHolder を使用してデフォルトのスレッドローカル状態を設定し、@WebAppConfiguration で構成されたベースリソースパスに基づいて MockHttpServletRequest、MockHttpServletResponse、ServletWebRequest を作成します。ServletTestExecutionListener は、MockHttpServletResponse および ServletWebRequest がテストインスタンスに挿入できることも保証し、テストが完了すると、スレッドローカル状態をクリーンアップします。
テスト用に WebApplicationContext をロードしたら、たとえば、テストフィクスチャをセットアップしたり、Web コンポーネントを呼び出した後にアサーションを実行したりするために、Web モックと対話する必要がある場合があります。次の例は、どのモックをテストインスタンスに自動接続できるかを示しています。WebApplicationContext と MockServletContext は両方ともテストスイート全体でキャッシュされるのに対し、他のモックは 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
//...
}