在Citrus Framework中设置变量和期望值

时间:2017-08-22 09:44:56

标签: java spring integration-testing citrus-framework

我想要测试以下场景:

  1. 执行对服务A的调用,获取JsonArray中的元素数
  2. 致电服务B以执行指定的操作
  3. 再次执行对服务A的调用,以验证JsonArray上是否有新元素
  4. PS:步骤2中的服务B调用与步骤3中的验证之间没有相关性。我只能验证元素数量在1中增加。

    • 我可以使用柑橘http().extractFromPayload()执行第1步并将其添加到变量
    • 我可以通过另一个http()电话
    • 执行第2步

    但是我被困在第3步,因为我无法修改步骤1中所采用的变量的值。我尝试过使用action(new AbstractTestAction() {...}),但它们并没有发生在测试所以它不起作用。

    有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

我已经改编了Citrus Framework - Can a variable be assigned from a response?的解决方案。我能够通过以下方式实现这一目标:

将此步骤添加到测试中(在执行上述步骤3之前):

groovy(new ClassPathResource("addVariable.groovy"));

这是addVariable.groovy

的内容
int expected = context.getVariable("currentDataXYZ").toInteger() + 1
context.getVariables().put("expectedDataXYZ", expected.toString())

我认为这有点麻烦,但它确实有效!如果有一个更干净的方式,这将很好,或者可能是一个功能请求:)