[英]mock-server simple mock not working with XML in the body
我有一个模拟服务器使用: http : //www.mock-server.com
该服务器对命中它的POST有两个不同的规则。 这是Java代码:
package mockserver.poc;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.mockserver.model.HttpRequest.request;
import static org.mockserver.model.HttpResponse.response;
import static org.mockserver.model.StringBody.regex;
import org.mockserver.client.server.MockServerClient;
import org.mockserver.mockserver.MockServer;
import org.mockserver.model.Delay;
public class MockServerPoc {
public static void main(String[] args) {
MockServer mockServer = new MockServer(8888);
System.out.println("Running:" + mockServer.isRunning());
MockServerClient mockServerClient = new MockServerClient("10.189.225.196", 8888);
mockServerClient.when(
request()
.withMethod("POST")
.withPath("/something1")
.withBody(regex("SubscriberA"))
)
.respond(
response()
.withBody("<xml>\n something1 ok \n<xml>")
.withDelay(new Delay(SECONDS, 1))
);
mockServerClient.when(
request()
.withMethod("POST")
.withPath("/something1")
.withBody(regex("SubscriberB"))
)
.respond(
response()
.withBody("<xml>\n something2 ok \n<xml>")
.withDelay(new Delay(SECONDS, 1))
);
}
}
该代码的问题在于,如果我尝试使用以下XML来使用SOAPUI,则该代码:
<?xml version="1.0" encoding="UTF-8"?>
<ns2:Envelope xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/">
<ns2:Body>
<objectclass>SubscriberA</objectclass>
</ns2:Body>
</ns2:Envelope>
我没有得到预期的结果
<xml>\n something1 ok \n<xml>
如果主体只是SubscriberA ,则工作正常,但如果是整个XML,则简单行不通。
我做错什么了吗?
您可以使用xpath代替regex并以类似的方式解决它,例如以下示例:
mockServer.when(
HttpRequest.request()
.withMethod("POST")
.withPath("/api/subscription")
.withBody(xpath("/import/operator/name['abc']"))
).respond(
response()
.withBody(getXmlResponse())
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.