Это мой тестовый код:доступ анонимным Runnable экземпляр в Mockito/Powermock
Activity activityMock = Mockito.mock(TestActivity.class);
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
Object[] args = invocationOnMock.getArguments(); // ->>>> args contains one Foo instance called "foo"
return invocationOnMock;
}
}).when(activityMock).runOnUiThread(any(Runnable.class));
runDialogOnUiThread(activityMock, new Foo());
Для следующего кода производства:
public static void runDialogOnUIThread(final Activity activity, final Foo foo) {
activity.runOnUiThread(new Runnable() {
@Override public void run() {
doSmth();
}
});
}
Смотрите мой комментарий в тестовом коде. Я ожидаю invocationOnMock.getArguments(), чтобы вернуть экземпляр Runnable, но он возвращает экземпляр Foo (что для меня совершенно не имеет смысла)?
Я думал
doAnswer(new Answer(){..}).when(b).bMethod(any(C.class))
перехватывает, когда bMethod() вызывается в любом месте на б, и он будет передавать экземпляр C.class в doAnswer(), чтобы сделать его доступным в «новом Ответ(). . "- Обратный звонок.
Как я могу получить доступ к анонимному экземпляру Runnable, который создается в производственном коде?