小编Gui*_*het的帖子

WebClient 在 JUnit 中导致“java.lang.IllegalStateException:执行器不接受任务”

我想在 JUnit 测试框架内使用反应式编程来对远程 REST API 进行系统测试。

我因此写道:

  @Test
  void testWebClient() {
    WebClient webClient = WebClient.builder()
        .baseUrl(GITHUB_API_BASE_URL)
        .defaultHeader(HttpHeaders.CONTENT_TYPE, GITHUB_V3_MIME_TYPE)
        .defaultHeader(HttpHeaders.USER_AGENT, USER_AGENT)
        .filter(ExchangeFilterFunctions
            .basicAuthentication(appProperties.getGithub().getUsername(),
                appProperties.getGithub().getToken()))
        .build();

    var response = webClient.get()
        .uri("/user/repos?sort={sortField}&direction={sortDirection}",
            "updated", "desc")
        .exchange()
            .doOnError(e -> {
              System.out.println(e.toString());
            })
            .subscribe(r -> {
              System.out.println(r  );
            });
  }
Run Code Online (Sandbox Code Playgroud)

获取我所有的 github 存储库。我不断发现这个错误:

java.lang.IllegalStateException: executor not accepting a task
Run Code Online (Sandbox Code Playgroud)

直到在“.exchange()”之后添加“.block()”以同步进行调用,一切开始正常工作。

我怀疑 JUnit 会启动一个特殊的线程上下文或类似的东西。你知道发生了什么吗?

多谢

java spring spring-webclient

3
推荐指数
1
解决办法
4278
查看次数

标签 统计

java ×1

spring ×1

spring-webclient ×1