我正在尝试创建 Spring Boot 控制器的 MockMvc 测试。我特别不希望启动整个应用程序上下文,因此我将上下文限制为有问题的控制器。但是,测试失败并显示 500,并显示以下日志输出:
2020-03-03 13:04:06.904 WARN 8207 --- [ main] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class main.endpoints.ResponseDto]
Run Code Online (Sandbox Code Playgroud)
看来 Spring Boot 上下文不知道如何找到 Jackson。
这是控制器
@RestController
class MyController {
@GetMapping("/endpoint")
fun endpoint(): ResponseDto {
return ResponseDto(data = "Some data")
}
}
data class ResponseDto(val data: String)
Run Code Online (Sandbox Code Playgroud)
测试如下:
@SpringBootTest(
classes = [MyController::class],
webEnvironment = SpringBootTest.WebEnvironment.MOCK
)
@AutoConfigureMockMvc
internal class MyControllerTest(@Autowired private val mockMvc: MockMvc) {
@Test
fun `should work`() {
mockMvc.perform(MockMvcRequestBuilders.get("/endpoint").accept(MediaType.APPLICATION_JSON))
.andExpect( …
Run Code Online (Sandbox Code Playgroud) 在解决 Maven 存储库的依赖关系时,Gradle 必须下载相应的 pom 文件。我想从 Gradle 脚本中访问此文件并将其保存在某处。我怎样才能做到这一点?