我们如何将JSON模式验证应用于消息响应?

时间:2019-04-22 10:54:10

标签: json citrus-framework

我正在尝试使用Citrus Framework编写一些示例代码。作为我的第一次尝试,我无法验证响应消息的JSON模式。

我已将架构存储库添加到citrus-context.xml文件,但不知道如何将其与Java代码一起使用。

柑橘上下文文件

<citrus:schema-repository id="schemaRepository" type="json">
        <citrus:schemas>
            <citrus:schema id="petCreation" location="classpath:org/logica/citrus/samples/PetCreationJSONSchema.json"/>
        </citrus:schemas>
</citrus:schema-repository>

Java文件

@CitrusTest
    public void end2endTest()
    {
        http().client(restClient).send().post("/pet").contentType("application/json").payload(new ClassPathResource("org\\logica\\citrus\\samples\\PetJSONCreation.json"));

        http().client(restClient).receive().response(HttpStatus.OK).messageType(MessageType.JSON);
    }

如果使用JSON,在哪里应用模式验证代码?

1 个答案:

答案 0 :(得分:0)

一旦Json模式在模式存储库中可用,则在处理receive动作中的传入消息时,将自动完成验证。

您唯一需要做的就是在您要用于验证的receive上提供架构名称。

http().client(restClient)
      .receive()
      .response(HttpStatus.OK)
      .messageType(MessageType.JSON)
      .jsonSchema("petCreation");

使用XML模式,Citrus可以按名称空间从存储库中自动选择正确的模式。在Json中,我们没有类似名称空间的名称,因此您需要显式指定架构名称。