【问题标题】:WebClient RequestHeadersUriSpec - The method in the type is not applicable for the argumentsWebClient RequestHeadersUriSpec - 类型中的方法不适用于参数
【发布时间】:2021-04-14 11:52:54
【问题描述】:

我试图在我的一项测试中模拟WebClient。我在网上找到了一些人们这样做的例子。

spring-data-elasticsearch 的一个例子和tutorials 的另一个例子。

这是我自己的例子。

@Test
public void mytest() {
  WebClient webClient = mock(WebClient.class);
  RequestHeadersUriSpec headersUriSpec = mock(RequestHeadersUriSpec.class);
  when(webClient.get()).thenReturn(headersUriSpec);
}

不幸的是,我看到了一些警告。这是我得到的:

WebClient.RequestHeadersUriSpec 是原始类型。对泛型 WebClient.RequestHeadersUriSpec 的引用应该被参数化

当我更改代码并向RequestHeadersUriSpec 添加通配符时,我收到另一条错误消息。

@Test
public void mytest() {
  WebClient webClient = mock(WebClient.class);
  RequestHeadersUriSpec<?> headersUriSpec = mock(RequestHeadersUriSpec.class);
  when(webClient.get()).thenReturn(headersUriSpec);
}

OngoingStubbing> 类型中的 thenReturn(WebClient.RequestHeadersUriSpec) 方法不适用于参数 (WebClient.RequestHeadersUriSpec)

如果我让 Java 推断类型,我会收到第三条消息。

@Test
public void mytest() {
  WebClient webClient = mock(WebClient.class);
  var headersUriSpec = mock(RequestHeadersUriSpec.class);
  when(webClient.get()).thenReturn(headersUriSpec);
}

类型安全:WebClient.RequestHeadersUriSpec 类型的表达式需要未经检查的转换才能符合 WebClient.RequestHeadersUriSpec

现在我想知道

  1. 为什么它适用于其他项目?
  2. 如何解决我的问题?

非常感谢!

最好的问候, 米尔科

【问题讨论】:

  • 你能更新你用于 Spring webclient 和 Mockito 的版本吗?
  • 我们已经在使用最新版本了。
  • WebClient.RequestHeadersUriSpec is a raw type 警告也出现在spring-data-elasticsearch 存储库中,考虑到它是一个警告,不会因为警告而失败。虽然由于 Mockito 的原因,通配符的这些错误是有效的,但您可以找到类似的答案:stackoverflow.com/questions/7366237/…stackoverflow.com/questions/15942880/…

标签: java spring-boot spring-webclient


【解决方案1】:

您可以尝试使用这样定义的 requestHeadersUriSpecMock 和 webClient:

    @Mock
    private WebClient webClientMock;
    
    @SuppressWarnings("rawtypes")
    @Mock
    private WebClient.RequestHeadersUriSpec requestHeadersUriSpecMock;

然后调用,或多或少如你所愿:when(webClientMock.get()).thenReturn(requestHeadersUriSpecMock);

这有帮助吗?你可以接受吗? :)

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2019-01-17
    相关资源
    最近更新 更多