Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring WebTestClient JSON LocalDate解码_Java_Spring Boot_Junit5_Spring Boot Test - Fatal编程技术网

Java Spring WebTestClient JSON LocalDate解码

Java Spring WebTestClient JSON LocalDate解码,java,spring-boot,junit5,spring-boot-test,Java,Spring Boot,Junit5,Spring Boot Test,在Spring Boot 2.0.1中使用WebTestClient时,我会根据绑定测试客户端的方式获得不同的格式化日期,请参见下面的代码 那么,如何让WebTestClient.bindToController返回LocalDate格式为2018-04-13?当我调用WebTestClient.bindToServer()时,我得到了预期的格式 @RestController public class TodayController { @GetMapping("/today") pu

在Spring Boot 2.0.1中使用
WebTestClient
时,我会根据绑定测试客户端的方式获得不同的格式化日期,请参见下面的代码

那么,如何让
WebTestClient.bindToController
返回
LocalDate
格式为
2018-04-13
?当我调用
WebTestClient.bindToServer()
时,我得到了预期的格式

@RestController
public class TodayController {
  @GetMapping("/today")
  public Map<String, Object> fetchToday() {
    return ImmutableMap.of("today", LocalDate.now());
  }
}

事实证明,在使用
WebTestClient.bindToController
时,我需要设置Jackson解码器/编码器。e、 g

@Test
  public void fetchTodayWebTestClientBoundToController() {
     WebTestClient webTestClient = WebTestClient.bindToController(controller)
         .httpMessageCodecs((configurer) -> {
             CodecConfigurer.DefaultCodecs defaults = configurer.defaultCodecs();
             defaults.jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, new MimeType[0]));
             defaults.jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, new MimeType[0]));
         })
        .configureClient()
        .build();
    webTestClient.get().uri("/today")
        .exchange()
        .expectBody()
        .json("{\"today\":\"2018-04-30\"}");
  }

当我对start.spring.io上生成的项目进行测试时,这两个测试的更详细答案都是绿色的。如果你复制一个复制项目,你能仔细检查并共享它吗?它们都是绿色的,但预期的日期格式不同。我希望它们今天都返回,格式为
2018-04-13
。如果使用
bindToController
不是一项硬性要求,你也可以使用autowire
WebTestClient
@Test
  public void fetchTodayWebTestClientBoundToController() {
     WebTestClient webTestClient = WebTestClient.bindToController(controller)
         .httpMessageCodecs((configurer) -> {
             CodecConfigurer.DefaultCodecs defaults = configurer.defaultCodecs();
             defaults.jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, new MimeType[0]));
             defaults.jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, new MimeType[0]));
         })
        .configureClient()
        .build();
    webTestClient.get().uri("/today")
        .exchange()
        .expectBody()
        .json("{\"today\":\"2018-04-30\"}");
  }