gpt4 book ai didi

java - 如何使用 junit 5 (Jupiter) 模拟 RestTemplate 交换

转载 作者:行者123 更新时间:2023-12-02 10:35:52 25 4
gpt4 key购买 nike

我尝试使用下面的代码,但在响应正文中我得到了空记录。

请帮助我解决以下代码。

Java 代码:

    public Customer getCustomers(String customerId, String authorization) {

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.set("Authorization", authorization);
HttpEntity<Customer> request = new HttpEntity<>(headers);
Map<String, Object> params = new HashMap<>();
params.put("CustomerId", customerId);

String url = "https://localhost:8080/api/customer/{CustomerId}/get";
ResponseEntity<Customer> response = restTemplate.exchange(
url,
HttpMethod.GET,
request,
Customer.class,
params
);
Customer customer = null;
if (response != null && response.getBody() != null) {
customer = response.getBody();
}
return customer;
}

测试代码:

    @Test
public void testGetCustomersSuccess() {
Customer customer = new Customer();
customer.setCountryCode("countryCode");
customer.setCreatedFrom("createdFrom");
customer.setCustomerlandline("224153");
customer.setCustomermobile("1522252");
customer.setEmail("email");
customer.setFirstname("firstName");
customer.setFiscalCode("fiscalCode");
customer.setFirstname("lastName");
customer.setId("5");
MultiValueMap<String, String> headers=new LinkedMultiValueMap<>();
headers.set(Authorization,"12152");
ResponseEntity<Customer> response=new ResponseEntity<Customer>(HttpStatus.OK);
when(restTemplate.exchange(Mockito.any(String.class),
Mockito.<HttpMethod> any(),
Mockito.<HttpEntity<Customer>> any(),
Mockito.<Class<Customer>> any(),
Mockito.<String, Object> anyMap()))
.thenReturn(response);
assertEquals(response.getBody(),serviceClientImpl.getCustomers("5", "12152"));

}

最佳答案

您需要在响应中设置客户的值(value)。您在客户对象中设置的值未在任何地方使用。试试这个:

ResponseEntity<Customer> response=new ResponseEntity<Customer>(customer,HttpStatus.OK);

关于java - 如何使用 junit 5 (Jupiter) 模拟 RestTemplate 交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53297209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com