0

我有以下要测试的场景:

  1. 调用服务A,获取JsonArray中的元素个数
  2. 调用服务 B 执行给定的操作
  3. 再次调用服务 A,以验证 JsonArray 上是否有新元素

PS:第2步中的服务B调用和第3步中的验证没有关联。我只是可以验证元素计数在1中增加。

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

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

有没有办法做到这一点?

4

1 回答 1

0

我已经从Citrus Framework 改编了一个解决方案 - 可以从响应中分配变量吗?. 我能够通过以下方式做到这一点:

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

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

这是内容addVariable.groovy

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

我认为这有点麻烦,但它有效!如果有更清洁的方法,那就太好了,或者可能是功能请求:)

于 2017-08-22T11:15:53.040 回答