gpt4 book ai didi

android - 使用 Mockito 模拟回调和监听器

转载 作者:搜寻专家 更新时间:2023-11-01 08:31:01 25 4
gpt4 key购买 nike

我正在尝试测试一个进行方法调用并等待通过监听器响应的类。

这些是交互器内部的接口(interface)。当我调用 fetch 时,将回调其中一个监听器函数。

interface Interactor {
void fetch(int offset, int size);
}

interface InteractorListener {
void onReady(List<Result> results);

void onError();
}

public class MyInteractor implements Interactor{

private ImageInteractorListener listener;

public MyInteractor() {}

public onAttach(ImageInteractorListener listener) {
this.listener = listener;
}

public void fetch(int offset, int size) {
// Make asyncrhonous task
// and manage the response in the next method
}

public void onAsyncroouTaskResponse() {
if (someChecks) {
listener.onReady(List<Result> results);
} else {
listener.onError();
}
}
}

public class MyClass implements ImageInteractorListener {

public MyClass() {
MyInteractor interactor = new Interactor();
interactor.onAttach(this);
interactor.fetch(1,1);
}

@Override
void onReady(List<Result> results) {
// doThings
}

@override
void onError() {
// doThings
}
}

这就是我的类(class)的制作方式。我需要测试 MyClass,所以我需要模拟 Interactor 回调

我已经针对不同的问题尝试了不同的解决方案,所以现在我没有最终代码或错误。但是没有人工作..

谢谢。

最佳答案

假设您正在测试 MyClass,您可以手动调用回调

// Test that errors are handled

// Given
Interactor interactor = mock(Interactor.class);
MyClass myClass = new MyClass(interactor);

// When
interactor.fetch(0, 0); // this call is optional, I just added it for clarity
myClass.onError();

// Then
// verify something

关于android - 使用 Mockito 模拟回调和监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40869789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com