2个数组的匹配或比较可以基于键集吗

问题描述 投票:0回答:1

当尝试比较 2 个不同的响应(源响应和实际响应)时,我们的代码中发生了需要考虑的转换,但我不确定如何执行此操作。

Array1 = ["从未连接","活动","从未连接"] 数组2 = ["N","A","N"]

虽然这些是相同的,但简单的匹配是行不通的。是否可以根据排序键转换其中一个数组?

convert A to ACTIVE, N to NEVER-CONNECTED, D to DISCONNECTEd. All other values are stored as is

karate
1个回答
0
投票

这有效,但我不确定这是否是最优雅的方式 $aResponse.serviceability[*].connectionStatusCode 为:["N","A","N"] $bResponse.serviceability[*].connectionStatus 为:["从未连接","活动","从未连接"]

    # Translation - convert A to ACTIVE, N to NEVER-CONNECTED, D to DISCONNECTEd. All other values are stored as is
    * def connectionStatusCode = $aResponse.serviceabilities[*].connectionStatusCode
    * if (printDebug) { karate.logger.debug('connectionStatusCode is:  ', connectionStatusCode); }
    * def conversion =
    """
    function(x){
      var value = '';
      karate.log('x: ', x);
      if (x == 'A') {value = 'ACTIVE'}
      else if (x == 'D') {value = 'DISCONNECTEd'}
      else if (x == 'N') {value = 'NEVER-CONNECTED'}
      else {value = x}
      return value;
      }
    """
    * def convertedConnectionStatusCode = karate.map(connectionStatusCode, conversion)
    * match bResponse.serviceabilities[*].connectionStatus == convertedConnectionStatusCode
© www.soinside.com 2019 - 2024. All rights reserved.