所有定製Jackson2ObjectMapperBuilder在集成測試springboot無法識別
我在Spring的主引導程序類,如下定製Jackson2ObjectMapperBuilder
。
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
public void configureJackson(Jackson2ObjectMapperBuilder builder) {
builder.filters(new SimpleFilterProvider().addFilter("customFilter", new ExampleFilter()));
}
其中ExampleFilter
是SimpleBeanPropertyFilter
的延伸。 我的POJO注有Jackson的@JsonFilter("customFilter")
。
我已經使用@RestController
和@GetMapping
註釋通過HTTP公開了POJO。 這工作正常,當我運行應用程序並訪問終點時,調用自定義篩選器。
現在我有一個如下所示的集成測試。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class IntegrationTest {
@LocalServerPort
private int port;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void getUser() throws Exception {
POJO obj = this.restTemplate.getForObject("http://localhost:" + this.port + "/pojo", POJO.class);
Assertions.assertThat(obj).isNotNull();
Assertions.assertThat(obj.getFirstName()).isEqualTo("Jane");
Assertions.assertThat(obj.getLastName()).isEqualTo("Doe");
Assertions.assertThat(obj.getAge()).isEqualTo("24");
}
}
當我運行測試,obj的當屬無效,我看到一個錯誤,no FilterProvider configured
Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Can not resolve PropertyFilter with id 'customFilter'; no FilterProvider configured; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not resolve PropertyFilter with id 'customFilter'; no FilterProvider configured
什麼我做錯了,我怎麼糾正呢?
我的文件夾結構是:
的src /主/ JAVA/COM/A/B/C/Application.java
的src /主/ JAVA/COM/A/B/C /控制器/ ControllerA.java
的src /測試/ JAVA/COM/A/b/C /控制器/ IntegrationTest.java