Лучший способ инициализировать объекты только для чтения в junits

У меня есть класс только для чтения, который будет инициализирован Джексоном. Я буду выдавать банку, которая будет использоваться API, и не хочу, чтобы пользователь устанавливал свойства объекта.

class ReadOnlyClass {
    private String value;
    public String getValue() {
        return this.value;
    }
}

Теперь этот объект должен быть передан другому сервису для выполнения какой-либо другой работы.

Я хочу написать Junits для этого сервиса. Как мне инициализировать этот объект.

Я слышал, что отражение - плохая практика. Есть ли какая-нибудь утилита в powermock/mockito или любой другой библиотеке, которую я могу использовать.

2 ответа

Есть ли какая-нибудь утилита в powermock/mockito или любой другой библиотеке, которую я могу использовать.

Таким образом, это должно работать,

class SomeService{
    public void doSomeTask(ReadOnlyClass roc){
      // Some logic
    }

}

class SomeServiceTest{

   @Mock
   private ReadOnlyClass readOnlyClass;

@autowired
   private SomeService someService;

   @Test
   public void testDoSomeTask(){
      when(readOnlyClass.getValue())
                .thenReturn("some value");
      someService.doSomeTask(readOnlyClass);
   }
}
  1. Вы можете создать конструктор, если вы можете изменить ReadOnlyClass.
  2. Вы можете подготовить JSON и десериализовать его, используя Джексона
Другие вопросы по тегам