Как заставить @JsonFilter и MappingJacksonValue работать в модульных тестах - PullRequest
0 голосов
/ 05 мая 2019

Я использую @JsonFilter, чтобы игнорировать некоторые свойства, отправленные в ответе Json.Это прекрасно работает, когда я запускаю свой контроллер через почтальон с запущенным приложением.Однако, когда я пытаюсь проверить ответ json с помощью mockmvc, свойства, которые должны игнорироваться, по-прежнему присутствуют.

@Data
@JsonFilter("empFilter")
public class Employee {
    private int id;
    private String name;
    private int age;
    private Integer test;
}


@GetMapping("/employee/ignoreProperties")
    public MappingJacksonValue retrieveSomeBean() {
        Employee emp = new Employee();
        emp.setAge(10);
        emp.setId(1);
        emp.setName("ana");
        emp.setTest(9);

        Set<String> set = new HashSet<>();
        set.add("test");
        return filterJson(emp, "empFilter", set);
    }

    private MappingJacksonValue filterJson(Object object, String filterName, Set<String> properties) {
        SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.serializeAllExcept(properties);

        FilterProvider filters = new SimpleFilterProvider()
                .setFailOnUnknownId(false)
                .addFilter(filterName, filter);

        MappingJacksonValue mapping = new MappingJacksonValue(object);

        mapping.setFilters(filters);

        return mapping;
    }


...