Лучший способ инициализировать объекты только для чтения в junits - PullRequest
0 голосов
/ 02 июля 2018

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Есть ли какая-либо утилита в 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);
   }
}
0 голосов
/ 02 июля 2018
  1. Вы можете создать конструктор, если можете изменить ReadOnlyClass.
  2. Вы можете подготовить JSON и десериализовать его, используя Джексона
...