在测试流的供应商时可以避免转换吗

时间:2019-06-30 17:58:31

标签: assertj

使用AssertJ时,在测试Streams供应商时可以避免转换吗?

我尝试查看未解决的问题,大多数都指向https://github.com/joel-costigliola/assertj-core/issues/683,但我认为这不是直接匹配。

        Supplier<Stream<String>> supplier = 
                 () -> Stream.of("String1", "String2");
        assertThat(supplier).isNotNull()
                .extracting(Supplier::get)
                .isInstanceOf(Stream.class)
                .satisfies((stream) ->
                        assertThat((Stream)stream)
                                .contains("String1", "String2"));

该测试有效,但我想尽可能避免转换Stream。 谢谢。

1 个答案:

答案 0 :(得分:0)

我同意tkruse的评论!

我只想补充一点,在AssertJ Core的下一版本(3.13.0)中,您将能够使用asInstanceOf来转换被测对象并访问特定于类型的断言,请参见https://github.com/joel-costigliola/assertj-core/pull/1498 < / p>

Object value = 0;
assertThat(values).asInstanceOf(INTEGER).isZero();

对于您而言,我相信您可以写:

assertThat(supplier).isNotNull()
                    .extracting(Supplier::get)
                    .asInstanceOf(STREAM)
                    .satisfies(stream -> assertThat(stream).contains("String1", "String2"));