我已经使用wiremck配置了几个存根。我需要检查通过Rest API向外部服务器发送请求的客户端。但是当我配置存根时,出于某种原因,存根的请求被截断,主机(模拟外部服务器)被截断。
application.properties
api.url.fail.header.rec.count.external.server=http://127.0.0.1:8282/dataByUnloadPlanPaysSet/failRecCount
public ResponseEntity<InfoFromExternalServerDto>
sendRequestFromExternalServer(String blockId, String urlToExternalServer) {
UriComponentsBuilder uriComponentsBuilder = buildUriToExternalServer(blockId, urlToExternalServer);
String uriWithParamsToExternalServer = uriComponentsBuilder.toUriString();
HttpHeaders requestHttpHeaders = getHeadersHttpHeaders();
HttpEntity<Object> requestHttpEntity = new HttpEntity<>(null, requestHttpHeaders);
return restTemplate.exchange(
uriWithParamsToExternalServer,
HttpMethod.GET,
requestHttpEntity,
InfoFromExternalServerDto.class
);
}
private UriComponentsBuilder buildUriToExternalServer(String blockId, String urlToExternalServer) {
return UriComponentsBuilder.fromHttpUrl(urlToExternalServer)
.queryParam("format", "json")
.queryParam("block", blockId);
}
private HttpHeaders getHeadersHttpHeaders() {
var requestHttpHeaders = new HttpHeaders();
requestHttpHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
return requestHttpHeaders;
}
@Value("${api.url.fail.header.rec.count.external.server}")
private String apiUrlFailHeaderRecCountToExternalServer;
public void setupStubForProcessingRequest(int portExternalServerMock) {
String addressHost = "127.0.0.1";
configureFor(addressHost, portExternalServerMock);
setupResponseInCaseFailRecCount();
}
private void setupResponseInCaseFailRecCount(){
String countEntriesIntoHeaderRecCount = "1";
UrlPattern urlPattern = urlEqualTo(this.apiUrlFailHeaderRecCountToExternalServer);
MappingBuilder mappingBuilder = get(urlPattern);
MappingBuilder mappingBuilderWithHeader = serverMockUtils.makeMappingBuilderSuccess(mappingBuilder);
int statusOk = HttpStatus.OK.value();
ResponseDefinitionBuilder responseDefinitionBuilder = aResponse().
withStatus(statusOk)
.withHeader("Content-Type", "application/json")
.withHeader("rec_count", countEntriesIntoHeaderRecCount)
.withBodyFile("json/infoFromExternalServer.json");
MappingBuilder responseForReturn = mappingBuilderWithHeader.willReturn(responseDefinitionBuilder);
stubFor(responseForReturn);
}
public MappingBuilder makeMappingBuilderSuccess(MappingBuilder mappingBuilder){
return mappingBuilder
.withHeader("Accept", matching("application/json"))
.withQueryParam("format", equalTo("json"))
.withQueryParam("block", equalTo(blockId));
}
@Value("${api.url.fail.header.rec.count.external.server}")
private String apiUrlFailHeaderRecCountToExternalServer;
@Value("${blockId.param.query}")
private String blockId;
private WireMockServer wireMockServer;
private final int portExternalServerMock = 8282;
@BeforeEach
void setup() {
WireMockConfiguration mockConfigurationPort = wireMockConfig()
.port(this.portExternalServerMock);
wireMockServer = new WireMockServer(mockConfigurationPort);
wireMockServer.start();
restServerMockForClient.setupStubForProcessingRequest(this.portExternalServerMock) ;
}
@AfterEach
void teardown() {
wireMockServer.stop();
}
@Test
void getDataFromExternalServer() {
InfoFromExternalServerDto dataFromExternalServer =
clientToExternalServer.getDataFromExternalServer(this.blockId,
this.apiUrlFailHeaderRecCountToExternalServer);
}
我有多个不同地址主机的配置。每台主机都有自己的端口。当我通过endpointRest控制器发送请求时,主机地址不会被截断。如果我调用从测试循环中调用客户机的方法,那么由于某种原因,主机地址形成了,Wiremock存根无法给出有效的答案。
请告诉我发生了什么。我该如何解决这个问题?
我找到了解决办法。
api.url.fail.header.rec.count.external.server=http://127.0.0.1:8282/dataByUnloadPlanPaysSet/failRecCount
api.url.fail.header.rec.count.for.stubs=/dataByUnloadPlanPaysSet/failRecCount
请点击此处了解详情。存根-创建存根时必须分配此地址(不指定主机地址和主机端口)
这很重要。
使用方法 - urlPathEqualTo()
UrlPathPattern urlPathPattern = urlPathEqualTo(this.apiUrlFailHeaderRecCountToExternalServer);
测试这种服务的基本策略是验证请求的内容(正确的URL),并确保我们模拟到服务中的数据通过正确的方法正确返回。 wikisearch.ts 我们的测试策略是检查服务是否已请求正确的网址,一旦我们回复了模拟数据,我们就要验证它是否返回相同的数据。
本文向大家介绍JS跨域请求外部服务器的资源,包括了JS跨域请求外部服务器的资源的使用技巧和注意事项,需要的朋友参考一下 tomcat服务器提供的接口,不能在其他域中访问的时候,需要增 Access-Control-Allow-Origin:* 以下操作均在需要被访问的项目中设置 1、编写拦截器代码 2、配置web.xml
我正在使用Spring云合同创建集成测试。从配置到将存根jar添加到项目,一切都正常工作。因此,我发现尽管所有参数和标头都相同,但请求不匹配。 这是API测试 这是API调用的合约 即使我从合同请求中删除用户名,仍然收到相同的错误。 我需要为X-B3-ParentSpanId等创建标题来使其匹配吗?
我正在尝试使用Jmeter测试一个soap服务。当使用SOAP/XML-RPC请求元素时,服务给出正确的结果。当使用Fiddler执行时,它给出正确的响应(响应代码200)。 但是当我使用Http Request在Jeter上运行相同的服务时。它返回响应代码为500并给出 “请求格式无效:文本/xml。 这在响应数据中。我试着把它改成许多格式,像“应用程序/xml”等等,但是没有用。 [HTTP_
我们当前的项目需求是将一些请求路由到第三方外部api服务器。为此,我们使用的是基于spring祖尔的路由器服务。 现在的要求是,对于某些endpoint,到外部api服务器的请求已经通过不属于我们的外部代理服务器路由, 如何通过卷曲完成此操作: 通过给定的代理重定向请求。如何通过spring-祖尔服务器做到这一点? 我有一条线索?https://github.com/spring-cloud/sp
我正在使用Modeshape rest服务器。Modeshape的版本是2.8.2。 当我向诸如这样的节点发送GET请求时,它会返回关于该节点的信息。 但是当我在同一个地址上发送删除请求(例如,使用Fiddler)时,它返回。根据文档,这样的地址应该支持删除请求。 更详细。我发送 我得到了 pom.xml,我正在使用它构建rest-server.war 我做错什么了吗? 而且我也在使用jboss-