Как создать несколько трансформаторов отклика на 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")

                )
        );

1 ответ

Вместо ссылки на класс в wireMockServer, например: Stub.class используйте конструктор, например: new Stub(), new test2()

      WireMockServer wireMockServer = new WireMockServer(WireMockConfiguration.options().port(8080).extensions(new Stub.(),new test2()));
        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")

                )
        );
Другие вопросы по тегам