问题描述
我一起使用黄瓜和柑橘,在我的 @Then
定义中,我具有柑橘HTTP响应:
I'm using cucumber and citrus together, and in my @Then
definition, I have the citrus HTTP response:
@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对象中?
Is there a way to store the returned JSON message body into a java JSON object?
推荐答案
您可以使用本地消息存储。在测试过程中,每条消息都应保存到本地内存中,您可以稍后在测试用例中通过其名称访问存储的消息:
You can use the local message store. Each message should be saved to that local in memory storage during the test. You can access the stored messages later in that test case via its name:
receive(action -> action.endpoint("sampleEndpoint")
.name("sampleMessage")
.payload("..."));
echo("citrus:message(sampleMessage.payload())");
请注意我们将收到的消息命名为 sampleMessage
。您可以在自定义tes中通过测试上下文访问消息存储
Please note that we named the received message sampleMessage
. You can access the message store via test context in custom test actions, too.
context.getMessageStore().getMessage("sampleMessage");
此外,您还可以在Java DSL中使用自定义消息验证回调。在这里您可以完全访问接收到的消息内容。
Besides that you could also use a custom message validation callback in Java DSL. Here you have full access to the received message content.
receive(action -> action.endpoint("sampleEndpoint")
.validationCallback((message, context) -> {
//Do something with message content
message.getPayload(String.class);
}));
这篇关于如何使用Java访问柑橘http接收消息正文?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!