Как создать несколько трансформаторов отклика на Wiremock - PullRequest
0 голосов
/ 08 мая 2018

Как мне создать несколько трансформаторов на карданной подвеске? Я видел в документации, что вы можете вызывать два преобразователя ответа на одной заглушке, но я не уверен, как вы будете создавать второй преобразователь ответа и давать ему имя?

Итак, это Второй преобразователь, который я создал

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")

                )
        );
...