Лучший способ инициализировать объекты только для чтения в 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);
}
}
- Вы можете создать конструктор, если вы можете изменить ReadOnlyClass.
- Вы можете подготовить JSON и десериализовать его, используя Джексона