使用以下代码,我尝试验证名称字段的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);
}
答案 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消息主体作为响应,并且您的验证将按预期执行。