Как вернуть объект при использовании MockedStatic в Java?

#java #testing #mockito

#java #тестирование #mockito

Вопрос:

Мне нужно смоделировать статический класс и привязать его во время запуска службы. Следующее https://asolntsev.github.io/en/2020/07/11/mockito-static-methods /, я настроил mockedstatic для класса и ожидания. Я хочу знать, как я могу вернуть издевательский класс, не являющийся MockedStatic?

 public static MyClass mockClass() {
  try (MockedStatic<MyClass> myClass = Mockito.mockStatic(MyClass.class)) {
        myClass.when(() -> MyClass.getMetho(Mockito.any()))
                .thenReturn("abc");
        return myClass;
  }}
  

возврат MyClass не работает. Как я могу удалить MyClass из MockedStatic?

Комментарии:

1. Вам необходимо инициализировать свой сервис внутри блока try.

2. Это не имеет значения. MyClass имеет видимость внутри блока try, проблема в том, что MyClass — это тип MockedStatic<..> , в то время как для этого требуется возвращать тип MyClass.

3. 1. во-первых, с текущей подписью вы возвращаете экземпляр вашего класса, содержащий статические методы, что, безусловно, не является намерением. 2. Это не то, как вы используете mockStatic. Вы можете использовать статический класс только внутри блока try. Обратите внимание, что это попытка с ресурсами, поэтому, если вы выйдете из блока try, статический класс больше не будет исправлен. Подводя итог, подход, который вы пытаетесь использовать, неверен, вся инициализация и использование сервиса должны быть в блоке try.