Я использую mockito для проверки вызова интерфейса, но у меня возникают некоторые проблемы, когда я хочу проверить, что метод интерфейса goToLoginInterface() был вызван последовательно, когда я вызываю «goToLogin()». Это должно быть что-то простое, но я пытался найти решение часами. Я положил и утвержу, чтобы убедиться, что 'getActivityParent()' эффективно возвращает объект mock Interface, и это !, поэтому я не знаю, в чем проблема.Как проверить вызов интерфейса с Mockito?
public class LoginSimpleFragment extends Fragment {
private ActivityInterface mParentActivity;
public interface ActivityInterface {
void goToLoginInterface();
}
public ActivityInterface getActivityInterface(){
return mParentActivity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.login_simple, container, false);
}
public void goToLogin() {
getActivityInterface().goToLoginInterface();
}
}
Это мой тестовый класс
@Config(manifest = "../app/src/main/AndroidManifest.xml", emulateSdk = 18)
@RunWith(RobolectricTestRunner.class) // <== REQUIRED for Robolectric!
public class TestLoginActivity {
@Test
public void testPositiveButtonAction() throws Exception {
LoginSimpleFragment mockLoginSampleFragment =
mock(LoginSimpleFragment.class);
LoginSimpleFragment.ActivityInterface mockInterface =
mock(LoginSimpleFragment.ActivityInterface.class);
Mockito.doNothing().when(mockInterface).goToLoginInterface();
//doReturn(mockInterface).when(mockLoginSampleFragment).getActivityInterface();
when(mockLoginSampleFragment.getActivityInterface()).thenReturn(mockInterface);
mockLoginSampleFragment.goToLogin();
assert(Mockito.mockingDetails(mockLoginSampleFragment.getActivityInterface()).isMock());
verify(mockInterface).goToLoginInterface();
}
}
тест на выходе сказал:
Wanted but not invoked:
activityInterface.goToLoginInterface();
-> at co.mobico.mainactivities.TestLoginActivity.testPositiveButtonAction(TestLoginActivity.java:35)
Actually, there were zero interactions with this mock.
TestLoginActivity.java:35 является линия «проверить (mockInterface) .goToLoginInterface () ', в конце тестовой функции
Можете ли вы помочь пройти тест? Я использую TDD в Android с robolectric, поэтому, если я не могу решить проблему, я не могу продолжать работать, спасибо!
Вы правы, я должен тщательно проверить, прежде чем спрашивать, спасибо очень много друзей, вы помогли мне много –