我想测试我的交互器,并且一段测试代码正在模拟为所有Interactor实现的BaseInteractor上的不同对象实现的Callback接口。
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,但是会引发异常或什么。
谢谢!
可能是因为我以前没有使用过模仿器...
更新
我取消了警告,发现一个错误:
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(
[]
);
可能我的错误来自于我不知道如何识别的其他部分,但是我认为我正确地给出了参数。
在verify方法的最后一行中,我传递了一个“ List