MockMvcTester の構成
MockMvcTester
は、2 つの方法のいずれかで設定できます。1 つは、テストするコントローラーを直接ポイントし、Spring MVC インフラストラクチャをプログラムで構成する方法です。もう 1 つは、Spring MVC とコントローラーインフラストラクチャを含む Spring 構成をポイントする方法です。
これら 2 つのモードの比較については、セットアップオプションを参照してください。 |
特定のコントローラーをテストするために MockMvcTester
を設定するには、次を使用します。
Java
Kotlin
public class AccountControllerStandaloneTests {
private final MockMvcTester mockMvc = MockMvcTester.of(new AccountController());
// ...
}
class AccountControllerStandaloneTests {
val mockMvc = MockMvcTester.of(AccountController())
// ...
}
MockMvcTester
から Spring 構成を設定するには、以下を使用します。
Java
Kotlin
@SpringJUnitWebConfig(ApplicationWebConfiguration.class)
class AccountControllerIntegrationTests {
private final MockMvcTester mockMvc;
AccountControllerIntegrationTests(@Autowired WebApplicationContext wac) {
this.mockMvc = MockMvcTester.from(wac);
}
// ...
}
@SpringJUnitWebConfig(ApplicationWebConfiguration::class)
class AccountControllerIntegrationTests(@Autowired wac: WebApplicationContext) {
private val mockMvc = MockMvcTester.from(wac)
// ...
}
関連する HttpMessageConverter
が登録されている限り、MockMvcTester
は JSON レスポンス本文または JSONPath 式の結果をドメインオブジェクトの 1 つに変換できます。
Jackson を使用してコンテンツを JSON に直列化する場合、次の例ではコンバーターを登録します。
Java
Kotlin
@SpringJUnitWebConfig(ApplicationWebConfiguration.class)
class AccountControllerIntegrationTests {
private final MockMvcTester mockMvc;
AccountControllerIntegrationTests(@Autowired WebApplicationContext wac) {
this.mockMvc = MockMvcTester.from(wac).withHttpMessageConverters(
List.of(wac.getBean(AbstractJackson2HttpMessageConverter.class)));
}
// ...
}
@SpringJUnitWebConfig(ApplicationWebConfiguration::class)
class AccountControllerIntegrationTests(@Autowired wac: WebApplicationContext) {
private val mockMvc = MockMvcTester.from(wac).withHttpMessageConverters(
listOf(wac.getBean(AbstractJackson2HttpMessageConverter::class.java)))
// ...
}
上記は、コンバーターが Bean として登録されていることを前提としています。 |
最後に、MockMvc
インスタンスが手元にある場合は、create
ファクトリメソッドを使用して使用する MockMvc
インスタンスを提供することで、MockMvcTester
を作成できます。