Могу ли я избежать кастинга при тестировании поставщика потоков - PullRequest
1 голос
/ 30 июня 2019

При использовании AssertJ, могу ли я избежать приведения при тестировании поставщика потоков?

Я пытался посмотреть на открытые проблемы, и большинство из них указывают на https://github.com/joel-costigliola/assertj-core/issues/683, но я не думаю, что это прямоеmatch.

        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 голосов
/ 02 июля 2019

Согласен с комментарием ткрузе!

Я просто хочу добавить, что в следующей версии AssertJ Core (3.13.0) вы сможете использовать asInstanceOf для приведения тестируемого объекта и получения доступа к конкретному утверждению типа, см. https://github.com/joel-costigliola/assertj-core/pull/1498

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

В вашем случае, я думаю, вы могли бы написать:

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