1

我一起使用黄瓜和柑橘,在我的@Then定义中,我有柑橘 HTTP 响应:

@CitrusResource TestRunner runner;

runner.http(builder -> {
    final HttpClientResponseActionBuilder rab = 
        builder.client("citrusEndpointAPI").receive()
        .response(HttpStatus.OK).messageType(MessageType.JSON)
        .contentType(MediaType.APPLICATION_JSON_VALUE);

有没有办法将返回的 JSON 消息体存储到 java JSON 对象中?

4

1 回答 1

1

您可以使用本地消息存储。在测试期间,每条消息都应保存到本地的内存存储中。您可以稍后在该测试用例中通过其名称访问存储的消息:

receive(action -> action.endpoint("sampleEndpoint")
    .name("sampleMessage")
    .payload("..."));

echo("citrus:message(sampleMessage.payload())");

请注意,我们将收到的消息命名为sampleMessage。您也可以通过自定义测试操作中的测试上下文访问消息存储。

context.getMessageStore().getMessage("sampleMessage");

除此之外,您还可以在 Java DSL 中使用自定义消息验证回调。在这里,您可以完全访问收到的消息内容。

receive(action -> action.endpoint("sampleEndpoint")
    .validationCallback((message, context) -> {
        //Do something with message content
        message.getPayload(String.class);
    }));
于 2017-08-10T09:53:29.050 回答