繁体   English   中英

模拟服务器简单模拟无法在主体中使用XML

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM