Как легко определить класс входного аргумента (контекст реактора проекта) - PullRequest
0 голосов
/ 06 декабря 2018

Я в настоящее время нахожусь в теме Project Reactor, и я играю с processor.core.publisher.Mono и processor.test.StepVerifier .

Учитывая следующий код:

import org.junit.Test;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;

public class ReactorTest {

  @Test
  public void test() {
    Joe joe = new Joe();
    Mono<Bob> result = joe.doStuff();

    StepVerifier.create(result)
                .expectError(RuntimeException.class)
                .verifyThenAssertThat()
                .hasOperatorErrorsMatching(errorList -> true); //true to be replaced by validations 
  }

}

И

public interface Bob {

}

И

import reactor.core.publisher.Mono;

public class Joe {

  public Mono<Bob> doStuff() {

    return Mono.error(new RuntimeException());

  }

}

Я пытаюсь выполнить кучу проверок внутри лямбда-выражения .hasOperatorErrorsMatching (...)

.hasOperatorErrorsMatching (...) определяется как следующим

Iдействительно трудно определить тип класса errorList , посмотрев на .hasOperatorErrorsMatching (...) doc и выражение входного аргумента:

Predicate<Collection<Tuple2<Optional<Throwable>, Optional<?>>>> arg0

Я единственный, кому это выражение трудно читать?

С помощью отладчика Eclipse мне удалось определить тип класса errorList , который вы можете видеть как ConcurrentLinkedQueue , теперь у меня есть то, что мне нужно для проверки .hasOperatorErrorsMatching (...) .

Вопрос : Как вы определяете тип класса errorList при написании кода?Вы проверяете отладчик, как я, или у вас есть более простые способы определить его?

...