您可以使用二进制 base64 消息验证器 ( MessageType.BINARY_BASE64
),它会自动将二进制数据流转换为 base64 编码的字符串值。然后,预期的消息负载也会转换为 base64 编码的字符串。只需为此使用 encodeBase64 Citrus 函数:
runner.receive(action -> action.endpoint("myJmsEndpoint")
.messageType(MessageType.BINARY_BASE64)
.payload("citrus:encodeBase64('<MyXmlMessage><content>Hello</content></MyXmlMessage>')")
这将对编码的 base64 字符串值执行纯文本消息验证。
如果您想使用完整的 Citrus XML 消息验证器功能,您需要编写一个自定义消息验证器,该消息验证器从com.consol.citrus.validation.xml.DomXmlMessageValidator
. 在这个自定义验证器中,您只需要自己对收到的消息进行二进制到 XML 字符串的转换。你可以这样做:
public class CustomMessageValidator extends DomXmlMessageValidator {
@Override
public void validateMessage(Message receivedMessage, Message controlMessage,
TestContext context, XmlMessageValidationContext validationContext)
throws ValidationException {
receivedMessage.setPayload(new String(receivedMessage.getPayload(byte[].class), FileUtils.getDefaultCharset()));
super.validateMessage(receivedMessage,
controlMessage, context, validationContext);
}
}