Web モックの使用
包括的な Web テストサポートを提供するために、TestContext フレームワークには ServletTestExecutionListener
があり、デフォルトで有効になっています。WebApplicationContext
に対してテストする場合、この TestExecutionListener
は、各テストメソッドの前に Spring Web の RequestContextHolder
を使用してデフォルトのスレッドローカル状態を設定し、@WebAppConfiguration
で構成されたベースリソースパスに基づいて MockHttpServletRequest
、MockHttpServletResponse
、ServletWebRequest
を作成します。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
//...
}