我试图模拟 .header 但它不起作用,有人有想法吗?

发布于 2025-01-19 16:55:45 字数 1036 浏览 3 评论 0原文

我尝试用 when(requestHeadersSpec.header(notNull(), notNull())).thenReturn(requestHeadersSpec); 或类似的东西来模拟标头,但我不起作用,有人有想法吗?

  return defaultWebClient
            .get()
            .uri(some uri)
            .headers(httpHeaders -> httpHeaders.set("Content-Type", "application/pdf"))
            .retrieve()
            .bodyToFlux(DataBuffer.class)

…… 这

就是我尝试编写单元测试的方式 when(defaultWebClient.get()).thenReturn(requestHeadersUriSpec); doReturn(requestHeadersSpec).when(requestHeadersUriSpec).uri(anyString()); Mockito.when(requestHeadersSpec.header(anyString())).thenReturn(requestHeadersSpec); when(requestHeadersSpec.retrieve()).thenReturn(responseSpec); DefaultDataBufferFactory 工厂 = new DefaultDataBufferFactory();

    DefaultDataBuffer dataBuffer =
        factory.wrap(ByteBuffer.wrap("{\"username\":\"foo\",\"password\":\"bar\"}".getBytes(StandardCharsets.UTF_8)));
    when(responseSpec.bodyToFlux(DataBuffer.class))
        .thenReturn(Flux.just(dataBuffer));

i tried to mock the header with when(requestHeadersSpec.header(notNull(), notNull())).thenReturn(requestHeadersSpec);, or something similar but i does not work, does anyone has an idea?

  return defaultWebClient
            .get()
            .uri(some uri)
            .headers(httpHeaders -> httpHeaders.set("Content-Type", "application/pdf"))
            .retrieve()
            .bodyToFlux(DataBuffer.class)

.....
}

this is how i tried to write the unit test
when(defaultWebClient.get()).thenReturn(requestHeadersUriSpec);
doReturn(requestHeadersSpec).when(requestHeadersUriSpec).uri(anyString());
Mockito.when(requestHeadersSpec.header(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
DefaultDataBufferFactory factory = new DefaultDataBufferFactory();

    DefaultDataBuffer dataBuffer =
        factory.wrap(ByteBuffer.wrap("{\"username\":\"foo\",\"password\":\"bar\"}".getBytes(StandardCharsets.UTF_8)));
    when(responseSpec.bodyToFlux(DataBuffer.class))
        .thenReturn(Flux.just(dataBuffer));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我是男神闪亮亮 2025-01-26 16:55:45

你可以尝试下面的方法

.withHeader(
  HttpHeaders.ACCEPT, 
  containing(org.springframework.http.MediaType.APPLICATION_JSON_VALUE)
)

You can try something like below

.withHeader(
  HttpHeaders.ACCEPT, 
  containing(org.springframework.http.MediaType.APPLICATION_JSON_VALUE)
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文