Следующий код работает, когда мой компонент использует аннотации Lombok Builder с пользовательским конструктором.
У меня возникают проблемы с тестированием, когда я хочу создать этот компонент со значениями. Я больше не могу использовать Setters (преднамеренно) и не могу просто использовать .builder () из-за пользовательского компоновщика.
У меня вопрос, как мне создать этот бин в моих тестах? Обратите внимание, что я хочу использовать конструктор и не хочу использовать аннотацию @Value от Lombok. Пользовательский конструктор необходим для работы с Джексоном.
Одна возможность, о которой я могу подумать, - это добавить конструктор в собственный конструктор, который, я надеюсь, мне не понадобится делать только для тестирования.
Пожалуйста, совет. Спасибо.
Настройка рабочего бина.
@Getter
@JsonDeserialize(builder = MyData.MyDataBuilder.class)
@Builder(builderClassName = "MyDataBuilder", toBuilder = true)
public class MyData {
@JsonProperty("some_key")
private String skey;
@JsonProperty("name")
private String name;
// needed to work with Jackson
@JsonPOJOBuilder(withPrefix = "")
static class MyDataBuilder {}
}
Проверка попытки создания объекта. Следующее не будет работать, как указано выше.
MyData.builder()
.skey("12345")
.name("some_name")
.build();
или
MyData myData = new MyData();
myData.skey("12345");
myData.name("some_name");