простой mock-сервер mock не работает с XML в теле

1

У меня есть макет сервера, используя: 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))
        );
    }
}

Проблема с этим кодом заключается в том, что, используя SOAPUI, если я попытаюсь использовать его в следующем XML:

<?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, он просто не работает.

Я что-то делаю неправильно?

Теги:
testing
mocking

1 ответ

0

Вы можете использовать xpath вместо regex и решить его аналогичным образом, пример ниже:

mockServer.when(
                HttpRequest.request()
                .withMethod("POST")
                .withPath("/api/subscription")
                .withBody(xpath("/import/operator/name['abc']"))
        ).respond(
                response()
                .withBody(getXmlResponse())
        );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню