为特定的Class <t>调用模拟方法嘲笑

时间:2018-11-06 19:42:10

标签: android unit-testing testing mockito verify

我想测试我的交互器,并且一段测试代码正在模拟为所有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 ,看来这将是一个空列表。

0 个答案:

没有答案