设置特性

无论使用哪个 MockMvc builder,所有 MockMvcBuilder 实现都提供了一些通用且非常有用的特性。例如,您可以为所有请求声明一个 Accept header,并期望所有响应的状态码为 200 以及包含 Content-Type header,如下所示

  • Java

  • Kotlin

// static import of MockMvcBuilders.standaloneSetup

MockMvc mockMvc = standaloneSetup(new MusicController())
	.defaultRequest(get("/").accept(MediaType.APPLICATION_JSON))
	.alwaysExpect(status().isOk())
	.alwaysExpect(content().contentType("application/json;charset=UTF-8"))
	.build();
// Not possible in Kotlin until {kotlin-issues}/KT-22208 is fixed

此外,第三方框架(和应用程序)可以预打包设置说明,例如 MockMvcConfigurer 中的说明。Spring Framework 有一个内置的此类实现,它有助于在请求之间保存和重用 HTTP 会话。您可以按如下方式使用它

  • Java

  • Kotlin

// static import of SharedHttpSessionConfigurer.sharedHttpSession

MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new TestController())
		.apply(sharedHttpSession())
		.build();

// Use mockMvc to perform requests...
// Not possible in Kotlin until {kotlin-issues}/KT-22208 is fixed

有关所有 MockMvc builder 特性的列表,请参阅 ConfigurableMockMvcBuilder 的 javadoc,或使用 IDE 探索可用选项。