找出是否至少有一个 - Observable Java 8 Rx

时间:2016-11-25 09:56:49

标签: java functional-programming java-8 rx-java

我有一个Observable<SomeObject>,我需要测试它至少有一个有价值的元素&#34; thing&#34; (不是流,我想)尊重一个条件(它是单元测试的,所以我需要断言一些东西或者至少抛出异常)。我应该如何在Java 8中编写它?

为了更好地解释:

Observable<SomeObject> thing = someFunction();
thing.flatMap(c -> c.toObservable())
.filter(q -> someContidion(q))
.forEach(x -> Assert.assertTrue(x!=null));

当然这不是我需要的,因为如果没有符合条件的元素我就不会看到任何错误并且单元测试通过了。

1 个答案:

答案 0 :(得分:0)

另一种方法是使用RxJava项目已经用于其自己的测试用例的内容,TestSubscriberTestScheduler在某些时候也可能对您有用):

@RunWith(JUnit4.class)
public class RxTest {

    @Test
    public void test() throws Exception {
        Observable<String> thing = Observable.just("thing", "stuff", "whatever", "", null);
        Observable<Boolean> test = thing.contains("thing");

        TestSubscriber<Boolean> sub = new TestSubscriber<>();
        test.subscribe(sub);

        sub.assertValue(true);
    }
}