java - 如何在wiremock上创建多个响应转换器
问题描述
如何在wiremock上创建多个变压器?我在文档中看到您可以在一个存根上调用两个响应转换器,但我不确定您如何创建第二个响应转换器并为其命名?
所以这是我创建的第二个变压器
public class test2 extends ResponseDefinitionTransformer{
String message;
boolean value;
@Override
public ResponseDefinition transform(Request rqst, ResponseDefinition rd, FileSource fs, Parameters prmtrs) {
message = rqst.getBodyAsString();
value = validateXMLSchema("xxx", message);
System.out.println("SECOND TRANSFORMER EXECUTED");
System.out.println("THIS IS THE CONDITION OF THE VALUE: " + value );
if(SchemaMatches){
return new ResponseDefinitionBuilder()
.withHeader("Content-Type", "application/xml")
.withStatus(200)
.withBody("XSD SCHEMA MATCHES")
.build();
}else{
return new ResponseDefinitionBuilder()
.withHeader("Content-Type", "application/xml")
.withStatus(404)
.withBody("MISMATCH")
.build();
}
}
@Override
public boolean applyGlobally() {
return false;
}
@Override
public String getName() {
return "tests";
}
}
这是我创建的第一个转换器:
public class Stub extends ResponseDefinitionTransformer {
@Override
public ResponseDefinition transform(com.github.tomakehurst.wiremock.http.Request rqst, ResponseDefinition rd, FileSource fs, Parameters prmtrs) {
message = rqst.getBodyAsString();
if(MandatoryFieldsExist){
return new ResponseDefinitionBuilder()
.withHeader("Content-Type", "application/xml")
.withStatus(200)
.withBody("MANDATORY FIELDS PRESENT ")
.build();
}
else{
return new ResponseDefinitionBuilder()
.withHeader("Content-Type", "application/xml")
.withStatus(404)
.withBody("MISMATCH")
.build();
}
}
@Override
public boolean applyGlobally() {
return false;
}
@Override
public String getName() {
return "example";
}
最后,这是我调用转换器的主要方法中的代码:
WireMockServer wireMockServer = new WireMockServer(WireMockConfiguration.options().port(8080).extensions(Stub.class, test2.class));
WireMock wireMockClient = new WireMock();
wireMockServer.start();
stubFor(post(urlEqualTo("/user/test"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/xml")
.withBody("XML RECIEVED")
.withTransformers("example","tests")
)
);
解决方案
推荐阅读
- java - SQS 消息中的 ISO-8859-1 字符集
- python - QTableWidget 列跨度未正确调整大小
- java - 将 JNI 与 Gradle(和 lombok)一起使用
- vb.net - : '不能绑定到新的值成员。参数名称:value' vb.net 以及如何使用组合框中的值
- excel - 将列中的日期合并到 Excel 中的单个单元格中
- java - 如何使用 OpenCSV 解析多行记录?
- javascript - 如何在 React 中的兄弟组件之间传递数据?
- ios - 获取 UIColor 的深色样式
- azure-active-directory - 有没有办法使用 Graph API 获取 SharePoint Site Creator 电子邮件和网站状态
- tcp - 如何在 Microsoft Teams 中阻止聊天和通话