我做了一個方法來檢查我們在埠上運行的 url 是否正常作業。
public boolean isBackendRunning() throws URISyntaxException, IOException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Object> entity = new HttpEntity<Object>(headers);
//ResponseEntity<String> out = restTemplate.postForEntity(new URI("https://localhost:8443"), entity, String.class);
ResponseEntity<String> response
= restTemplate.getForEntity("https://localhost:8443", String.class);
return true;
}
問題是在運行我們的單元測驗時,我總是得到org.springframework.web.client.ResourceAccessException Caused by: java.net.ConnectException
public static MockWebServer mockBackEnd;
@Autowired Controller Controller;
MissionController mc = Mockito.mock(Controller.class);
@Mock
RestTemplate mockRestTemplate;
@Mock public ResponseEntity<String> responseEntity;
@Test
public void GetRequestTest() throws IOException, URISyntaxException {
Mockito.when(mockRestTemplate.getForEntity(any(), eq(String.class))).thenReturn(responseEntity);
Mockito.when(mock.isBackendRunning()).thenReturn(true);
mockBackEnd.enqueue(new MockResponse().setBody(response).addHeader(content, app_json));
assertEquals(
...
.getMissionJSON(MockOAuth2AuthenticationToken.createAuthCountry())
.toString());
}
在上面的代碼示例中,我嘗試模擬 get restTemplate 以僅回傳結果,并模擬該方法。我認為這會阻止該方法實際運行代碼,而只是給我一個結果,以便我們可以進行單元測驗。不是這種情況。
如何在不出現這些錯誤的情況下處理此檢查?OpenConnection 不適用于我們設定程式的方式。我已經嘗試了很多不同的方法來讓它與 restTemplate 一起作業。
uj5u.com熱心網友回復:
看起來您有一個具有 RestTemplate 依賴項的 MissionController 類,并且您想將該依賴項的模擬注入 MissionController 實體以對 isBackendRunning 方法進行單元測驗。
@RunWith(MockitoJUnitRunner.class)
public class MissionControllerTest {
@Mock
private RestTemplate mockRestTemplate;
@Mock
private ResponseEntity<String> responseEntity;
@InjectMocks
private MissionController missionController = new MissionController();
@Test
public void GetRequestTest() throws Exception {
Mockito.when(mockRestTemplate.getForEntity(any(),
any(Class.class))).thenReturn(responseEntity);
boolean running = missionController.isBackendRunning();
assertTrue(running);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442990.html
