Karate 如何根据上一个响应中的条件执行步骤

Karate 如何根据上一个响应中的条件执行步骤,karate,Karate,嘿,空手道DSL社区-我想知道是否有人能帮助我理解如何基于先前的响应值(条件逻辑)在场景中执行特定的测试步骤。在阅读了文档之后,我发现这在功能文件中是可能的,但我也想知道如何在场景中优雅地做到这一点 下面我将尝试解释我想要实现的目标 Given path '/games/list' When method get Then status 200 And def response = {"games":[{"gameId":"3431572","gameStatus":"RELEASED","re

嘿,空手道DSL社区-我想知道是否有人能帮助我理解如何基于先前的响应值(条件逻辑)在场景中执行特定的测试步骤。在阅读了文档之后,我发现这在功能文件中是可能的,但我也想知道如何在场景中优雅地做到这一点

下面我将尝试解释我想要实现的目标

Given path '/games/list'
When method get
Then status 200
And def response = {"games":[{"gameId":"3431572","gameStatus":"RELEASED","releaseDate":"2018-10-31"}]}
And match response.games == '#[]'

Given path '/games/action'
And request {"game":{"gameId":"3431572","gameStatus":"RELEASED","releaseDate":"2018-10-31"},"gameAction":"DOWNLOAD"}
When method post
Then status 200
如果
response.game.gameStatus='UNRELEASED'
那么我想解析
request.gameAction='PREORDER'

否则,如果
response.game.gameStatus='RELEASED'
那么我想解析
request.gameAction='DOWNLOAD'

如果您需要更多信息,请告诉我。我相信在这里使用
set
可以与一些javascript函数一起工作

听起来很简单:

* def payload = {}
* def lookup = { UNRELEASED: 'PREORDER', RELEASED: 'DOWNLOAD' }
* payload.gameAction = lookup[response.game.gameStatus]
# ...
* request payload