使用消息类型作为JSON,在验证期间收到错误消息,例如“接收消息有效负载为空”

时间:2018-10-23 10:29:32

标签: citrus-framework

使用以下代码,我尝试验证名称字段的mongodb数据,但测试用例失败

20193 [main] INFO com.consol.citrus.Citrus -  FAILURE: Caused by: ValidationException: Unable to validate message elements - receive message payload was empty

如果我在下面的代码中注释.messageType(MessageType.JSON),则通过了相同的测试。

请让我知道您对此错误的输入以及验证输出json消息的步骤。

10491 [main] INFO com.consol.citrus.validation.xml.DomXmlMessageValidator - XML message validation successful: All values OK
10495 [main] INFO com.consol.citrus.validation.DefaultMessageHeaderValidator - Message header validation successful: All values OK

@CitrusTest
public void def_DI7381AndDI7383_CreateNamespace() {

    echo("----@CitrusTest Calling API services---- ");
    String strCname1="";
    String strId1="";

    http()
        .client(DIAPI)
        .send()
        .post("modeler/api/internal/namespace")
     // .name("todoRequest")
        .accept("application/json")
        .header("Content-type","application/json")
        .header("access","application/json")
        .payload(new ClassPathResource("updatedJsonFiles/NameSpace/UpdValidNameSpace.json"));
    //  .payload(new ClassPathResource("UpdValidNameSpace.json"));



    http()
        .client(DIAPI)
        .receive()
        .response(HttpStatus.CREATED)
    //  .messageType(MessageType.JSON)
    //  .payload(new ClassPathResource("updatedJsonFiles/NameSpace/UpdValidNameSpace.json"))
    //  .payload("citrus:jsonPath(citrus:message(todoRequest.payload()), '$..name')");
    //  .validate("$..id",id)
        .validate("$.name", strCname);
    //  .validate("$..namespaceId", namespaceId)
    //  .validate("$..description", description);
}

1 个答案:

答案 0 :(得分:0)

如果遗漏了.messageType(MessageType.JSON),Citrus使用的是默认消息类型,即XML。这就是为什么您在日志中看到XML message validation successful的原因。

由于XML消息验证器无法应用给定的JsonPath表达式,因此您的测试为绿色。因此,您需要使用.messageType(MessageType.JSON)

问题的根本原因是被测系统以空的邮件正文响应Http请求。如您所希望的那样,您的验证消息中会出现Citrus引发ValidationException: Unable to validate message elements - receive message payload was empty

因此,请确保被测系统正在发送适当的JSON消息主体作为响应,并且您的验证将按预期执行。