在RxJava中测试异步轮询服务

时间:2017-02-27 21:48:39

标签: unit-testing rx-java rx-java2

我实现了一个服务,该服务轮询eyetracking事件并使用FlowableProcessor(RxJava 1.x中的PublishSubject)推送接收到的数据。整个轮询在不同的线程中运行,可以使用服务类方法启动和停止。

我为该服务编写了一个测试,但我不确定我是否正在做正确的事。

我的想法:

  1. 订阅流服务提供的流
  2. 启动服务
  3. 等待onComplete事件(当服务提供非无限数据源模拟时自动发布)
  4. 验证结果
  5. 这是我的测试代码:

    StreamService service = new StreamService(mockSource);
    Flowable<ETData> stream = service.getStream();
    
    TestSubscriber<ETData> testSub = new TestSubscriber<>();
    stream.subscribe(testSub);
    
    service.start();
    testSub.await();
    
    testSub.assertNoErrors();
    testSub.assertComplete();
    
    List<ETData> received = testSub.values();
    
    assertEquals(2, received.size());
    assertEquals(mockData0, received.get(0));
    assertEquals(mockData1, received.get(1));
    

    这没关系,还是我错过了什么?

0 个答案:

没有答案