我已經為RestTemplate(RestTemplateInterceptor.class)實現了一個攔截器:@Autowiredprivate RestConfigurations configurations;@Beanpublic RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.additionalInterceptors((ClientHttpRequestInterceptor) (httpRequest, bytes, clientHttpRequestExecution) -> { HttpHeaders headers = httpRequest.getHeaders(); headers.add("X-API-KEY", configurations.getApiKey()); return clientHttpRequestExecution.execute(httpRequest,bytes); }).build();}現在我想測試一下。:) 一次嘗試看起來像這樣:@ExtendWith(SpringExtension.class)@RestClientTest({RestTemplateInterceptor.class, RestConfigurations.class})@AutoConfigureMockMvc@SpringBootTestclass MyTestClass {public static final String URL = "http://testMe.com/";@AutowiredMockRestServiceServer mockServer;@AutowiredRestTemplateBuilder restTemplateBuilder;@Test@DisplayName("Should include header X-API-KEY")void headerShouldContainsXApiKey() throws Exception { mockServer.expect(requestTo(URL)).andRespond(withSuccess("Hello world", TEXT_PLAIN)); String body = restTemplateBuilder.build().exchange(URL// , GET, // null, // String.class).getBody(); assertThat(body).isEqualTo("Hello world"); mockServer.expect(header("X-API-KEY", ""));}但我失敗了:java.lang.AssertionError: 預期沒有進一步的請求:HTTP GET http://test.hornbach.de/ 0 個請求已執行。任何人的提示?謝謝
測試 RestTemplate 攔截器
慕的地8271018
2021-11-17 17:26:46