Мне интересно проверить мой интерактор, и часть тестового кода высмеивает интерфейс Callback, который реализован для различных объектов в BaseInteractor, который реализуют все Interactors.
public interface Callback<T> {
void onSuccess(T response);
void onError(Exception exception);
}
Я хочу проверить метод onSuccess, и я сделал это:
@Test
public void shouldGetContributorsSuccess() {
repository = mock(Repository.class);
List<Contributor> contributor = getMockContributor();
GetContributorsInteractor interactor = getFilterReports();
GetContributorsInteractor.Callback callback = mock(GetContributorsInteractor.Callback.class);
interactor.execute(contributor.get(0).getUserName(), "Hello_World", callback);
verify(callback).onSuccess(contributor);
}
когда я хочу смоделировать Обратный звонок в этой строке:
GetContributorsInteractor.Callback callback = mock(GetContributorsInteractor.Callback.class);
после этого я вызываю verify(callback).onSuccess(contributor);
и показываю предупреждение, в котором говорится о непроверенном вызове onSuccess (T) в качестве члена необработанного типа '... .BaseInteractor.Callback'.
Я не знаю, должен ли я указать в строке mock определенный тип как GetContributorsInteractor.Callback, но выдает исключение или что.
Заранее спасибо!
Возможно, это потому, что я раньше не использовал мокито ...
UPDATE
Я подавляю предупреждения и обнаружил ошибку, которая говорит:
Argument(s) are different! Wanted:
callback.onSuccess(
[com.example.x.iphonedroid.domain.entities.Contributor@2f686d1f]
);
-> at com.example.x.iphonedroid.domain.GetContributorsInteractorTest.shouldGetContributorsSuccess(GetContributorsInteractorTest.java:61)
Actual invocation has different arguments:
callback.onSuccess(
[]
);
Возможно, моя ошибка связана с другой частью, которую я не знаю, как идентифицировать, но я думаю, что даю параметры правильно.
В последней строке метода проверки я передаю "List " и кажется, что это будет пустой список.