@Biaci_Anj

Mockito inline, Объект не мокается, в чем причина?

Вот пример супер упрощённого тестируемого класса.

public class DishService {

    DaoFactory daoFactory = DaoFactory.getInstance();

    public void exampleMethod() {
        System.out.println(daoFactory);
     DishDao dishDao = daoFactory.createDishDao();
        System.out.println(dishDao.findById(1));
    }
}

Вот DaoFactory

public abstract class DaoFactory {
    private static DaoFactory daoFactory;
    public abstract UserDao createUserDao();
    public abstract DishDao createDishDao();
    public abstract OrderDao createOrderDao();

    public static DaoFactory getInstance() {
        if (daoFactory == null) {
            synchronized (DaoFactory.class) {
                daoFactory = new JDBCDaoFactory();

            }
        }
        return daoFactory;
    }
}

Вот мой тест класс
@ExtendWith(MockitoExtension.class)
     class DishServiceTest {
        @Spy
        DishService dishService;
        @Mock
        DishDao dishDao;
        @Mock
        DaoFactory daoFactory;
    
        @Test
        void example() {
            MockedStatic<DaoFactory> daoFactoryDummy = Mockito.mockStatic(DaoFactory.class);
            daoFactoryDummy.when(DaoFactory::getInstance).thenReturn(daoFactory);
            Mockito.when(daoFactory.createDishDao()).thenReturn(dishDao);
            when(dishDao.findById(1)).thenReturn(new Dish());
            dishService.exampleMethod();
        }

Проблема в том, что daoFactory не мокается, как вы видите, я возвращаю пустое блюдо, а в консоли вижу это.
Это значит, что mocking не работает и я соединяюсь с реальным DishFacotry.

Dish{name='dadawd', description='wdadwad2', category=DRINKS, price=23131.00, imageFileName='FIRSTSnacksAsDaypart_1.jpg', orderItems=null}

Unnecessary stubbings detected.
1. -> at service.DishServiceTest.example(DishServiceTest.java:35)
2. -> at service.DishServiceTest.example(DishServiceTest.java:36) 35 and 36 lines of code you can see at the screen.

Вот 35 и 36 строки кода
9u8a0.png
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы