当前位置: 首页 > 知识库问答 >
问题:

类型中的方法不适用于参数

储阳曦
2023-03-14

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

一个例子来自sping-data-elasticsearch,另一个来自一些教程。

这是我自己的例子。

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

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

网络客户。RequestHeaderUrispec是原始类型。对泛型类型WebClient的引用。RequestHeaderUrispec应该参数化

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

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

然后返回方法(Web客户端。请求头。UriSpec

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

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

类型安全:类型WebClient的表达式。请求标题UriSpec需要未检查的转换以符合WebClient。请求标题UriSpec

现在我想知道

  1. 为什么它适用于其他项目

非常感谢你!

向你问好,米尔科

共有1个答案

越雨泽
2023-03-14

您是否可以尝试使用像这样定义的请求HeadersUriSpecMock和webClient:

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

然后根据需要或多或少地调用:when(webClientMock.get())。然后返回(requestHeadersUriSpecMock)

这有帮助吗?你能接受吗?:)

 类似资料: