当前位置: 首页 > 知识库问答 >
问题:

Mockito-当使用RXJava2.retry()进行排列时

董同
2023-03-14
public class Foo {

    private Bar bar;

    public Foo(Bar bar) {
        this.bar = bar;
    }

    public Completable execute() {
        return Completable.fromAction(() -> System.out.println("first part of task"))
                .andThen(bar.dangerousMethod()
                        .retry(10)
                )
                .andThen(Completable.fromAction(() -> System.out.println("sec part of task")));
    }
}


public interface Bar {
    Completable dangerousMethod();
}
@Mock private Bar bar;
@InjectMocks private Foo foo;

@Test
public void test() throws Exception {
    when(bar.dangerousMethod()).thenReturn(
            error(new Exception()),
            error(new Exception()),
            complete()
    );

    foo.execute()
            .test()
            .assertComplete();
}

如何以正确的方式使用Mockito测试.retry()方法?

共有1个答案

子车轶
2023-03-14

您不应该测试这个方法,因为它不是代码的一部分,而且(我希望)编写RxJava库的人已经对它进行了很好的测试。

但无论如何,如果你想测试你能做到:

将when语句替换为:

   when(bar.dangerousMethod()).thenReturn(
                Completable.defer(new Callable<CompletableSource>() {
                    boolean fail = true;
                    @Override
                    public CompletableSource call() throws Exception {
                        if(fail) {
                            fail = false;
                            return Completable.error(new Exception());
                        } else {
                            return Completable.complete();
                        }
                    }
                }));
 类似资料:
  • 编辑:这里https://github.com/wujek-srujek/reactor-retry-test是一个包含所有代码的存储库。 我有以下Spring代码要发布到远程服务器(为了简洁起见,没有导入Kotlin代码): (它返回一个空的,因为我们不期望得到答案,也不关心它。) 我想测试两个案例,其中一个让我头疼,即我想测试的所有重试都被解雇了。我们使用的是(https://github.c

  • 我有一个自定义对象列表(

  • 我使用JUnit4和Mockito创建了一个Spring Boot2应用程序。当我测试某种方法时。会出现这样的例外: 这是我的测试代码 SuveryService.java SurveyRepository.java 我引用了这篇文章Mockito NullPointerException,但这个问题仍然存在。任何帮助都将被应用。

  • 问题内容: 我有一组三个列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。 每个列表项都需要有自己的ID,因为它们每个都有各自的背景图像。数字必须是文本节点,以便用户可以编辑它们。 问题答案: 这可能是最快的方法,因为它不使用jQuery: 像下面这样调用函数: 您可以以相同的方式对其他列表进行排序,如果列表类在同一页面上还有其他元素,则应给您的ul一

  • 问题内容: 我正在尝试查找给定字符串的排列,但是我想使用迭代。我在网上找到了递归解决方案,但我确实理解它,但是将其转换为迭代解决方案实际上是行不通的。下面附上我的代码。我非常感谢您的帮助: 问题答案: 在我的相关问题评论之后,这是一个Java实现,可以使用Counting QuickPerm Algorithm 来完成您想要的事情:

  • 我有一个这样的方法: 此方法需要以如下字符串形式返回3个最昂贵项目的产品ID:“item1,item2,item3”。我应该只能使用溪流,我被困在这里了。我应该能够按值对项目进行排序,然后获得产品ID,但我似乎无法使其正常工作。 编辑: 产品ID位于入口类中