Mockito говорит, что вы не можете использовать сопоставления аргументов (в вашем случае Mockito.any ()) с необработанными значениями (в вашем случае "someurl" и HttpMethod.POST)
Таким образом, либо вы удаляете сопоставления аргументов, либо добавляете сопоставление аргументов в необработанные значения. Mockito.eq для «someurl» и HttpMethod.POST в вашем случае вызовут макет в вашем тесте. см. ниже.
Также, если вы хотите убедиться, что шаблон отдыха был вызван определенным образом, вы можете использовать Mockito.verify (). См. Ниже, чтобы убедиться, что остальной шаблон был вызван с определенным URL
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class MyService {
private String someurl = "myurl";
private RestTemplate restTemplate = new RestTemplate();
public String serviceCall(String s1) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("headers1", "headers1");
HttpEntity<String> entity = new HttpEntity<String>(s1, headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(someurl, HttpMethod.POST, entity, String.class);
return responseEntity.getBody();
}
}
и
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
@RunWith(MockitoJUnitRunner.class)
public class RestTemplateTests {
@Mock
private RestTemplate restTemplate;
private String testUrl = "myurl";
@InjectMocks
private MyService serviceClass;
@Test
public void test1() {
String expectedBody = "hey";
ResponseEntity<String> responseEntity = new ResponseEntity<>(expectedBody, HttpStatus.OK);
when(restTemplate.exchange(eq(testUrl), eq(HttpMethod.POST), any(), eq(String.class)))
.thenReturn(responseEntity);
String s2 = serviceClass.serviceCall("s1");
verify(restTemplate, times(1)).exchange(eq(testUrl), any(), any(), eq(String.class));
assertEquals(s2, expectedBody);
}
}