заглушить вложенную частную асинхронную функцию с помощью powermock - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть функция со следующим потоком:

public static void func(
      ClassA a, ClassB b) {
    a.innerfunc().innerfunc().addListener(
            new Listener<IUser>() {

              @Override
              public void onDataReceived(IUser response) {
                mAttrDict = response.toDict();
              }

              @Override
              public void onError(ErrorClass error) {
                a.getLogger()
                    .error("log-message");
              }
            };
  }

Я хотел бы заглушить addListener и отправить собственный dict для тестирования.
Это как-то возможно с powermock?
Спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

Использование PowerMock почти всегда уступает плохому дизайну.

В вашем случае похоже, что ваш код нарушает "сокрытие / инкапсуляцию информации", что приводит к * цепочечному "вызову a.innerfunc().innerfunc()

Вы должны преобразовать свой код так, чтобы объект, который необходимо смоделировать, мог быть передан в тестируемый код как внедренная зависимость , которая может быть создана с использованием ванильного Mockito.

...