WebTarget resource = clientLocal.target(/test/url))
Response response = resource.request(MediaType.APPLICATION_JSON)
.header("Content-type", MediaType.APPLICATION_JSON)
.header("Authorization", "Basic"+" "+"234YML")
.post(Entity.entity("", MediaType.TEXT_PLAIN), Response.class);
responseEntity = response.readEntity(Test.class);
当模拟Response
对象时,授权标头的builder
对象返回 null ,
Mockito.when(mockWebTarget.request(MediaType.APPLICATION_JSON)).thenReturn(mockBuilder);
Mockito.when(mockBuilder.header("Content-type", MediaType.APPLICATION_JSON))
.thenReturn(mockBuilder);
Mockito.when(mockBuilder.header("Authorization",eq(anyString())))
.thenReturn(mockBuilder);
Mockito.when(mockBuilder.post(Entity.entity(anyString(), MediaType.TEXT_PLAIN), eq(Response.class)))
.thenReturn(mockResponse);
如何模拟标题的第二部分,使其不返回 null 值?
答案 0 :(得分:1)
eq(anyString())
是
Mockito.when(mockBuilder.header("Authorization",eq(anyString())))
.thenReturn(mockBuilder);
应该是
Mockito.when(mockBuilder.header(eq("Authorization"), anyString()))
.thenReturn(mockBuilder);
参数匹配器eq
用于文字匹配。
此外,如果您使用参数匹配器,则必须由匹配器提供所有参数。
第一个有效,因为所有参数都是字面值。
这也意味着
Mockito.when(mockBuilder.post(Entity.entity(anyString(), MediaType.TEXT_PLAIN), eq(Response.class)))
.thenReturn(mockResponse);
需要改为
Mockito.when(mockBuilder.post(any(Entity.class), eq(Response.class)))
.thenReturn(mockResponse);