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 を作成できます。