Это может быть немного сложнее, если вы хотите написать модульные тесты для тесно связанного кода.Чтобы упростить уни-тестирование, лучше опираться на абстракции, а не на реальные реализации.Например, класс Order
не должен зависеть от реальной реализации сервисного уровня, вместо этого вводите интерфейс, который намного проще моделировать, чем класс, который может быть установлен на final
.
RequestHandler отвечает за создание экземпляров Order, которые вы должны предоставить, чтобы смоделировать класс Order в модульных тестах.Простой способ - создать защищенный метод, который просто создает новый экземпляр заказа.
protected Order createOrder(String someParam) {
return new Order(someParam);
}
В ваших модульных тестах вы теперь можете расширить класс и перезаписать фабричный метод.Используя Mockito это будет выглядеть так:
protected Order createOrder(String someParam) {
Order order = Mockito.mock(Order.class); // create mock object
// configure mock to return someParam when
// String Order#getSomeParam() gets invoked
Mockito.doReturn(someParam).when(order).getSomeParam();
return order;
}