как использовать karate.match в условном цикле - PullRequest
0 голосов
/ 30 ноября 2018

Как я могу реализовать следующее

* eval if(TestCaseType == "negative") karate.match(messageConstructedFromRequestData_N1,messageFromApiResponse_N1)

* eval if(TestCaseType == "positive") karate.match(messageConstructedFromRequestData_P1,messageFromApiResponse_P1)

Я в основном хочу сопоставить переменные, когда определенное условие соответствует.Я попробовал это

* eval if(TestCaseType == "negative-2") result = karate.match(messageConstructedFromRequestData_N2,responseMessage_N2)

Когда я печатаю результат, я получаю его как "true", но я не могу присвоить это переменной, а затем утверждать результат.Как то так

* def y = result
* match y == { pass: true, message: null }

Ответы [ 2 ]

0 голосов
/ 10 января 2019
def conditional =
  """
  function() {if(result.pass){
  var arr = []
    arr[0] = karate.match(response.businessData.productRule.productName, '#string').pass;
    arr[1] = karate.match(response.businessData.productRule.productName, '#stdfsring').pass;
    return arr;  
    }
  }
  """
  * def callFunction = call conditional
  * print callFunction
  * match callFunction !contains false
0 голосов
/ 30 ноября 2018

Я думаю, что вы чрезмерно разрабатываете свои тесты.Будь проще.Разделить на несколько шагов.Например:

* def first = { available: true, collection: true }
* def second = { code: 'foo', message: 'bar' }
* def testType = 2

* def response = second
* def expected = testType == 2 ? { code: '#string', 'message': '#string' } : { available: '#boolean', collection: '#boolean' }
* match response == expected

Тщательно найдите раздел «Условная логика» в документации.И помните, что если вы действительно хотите, вы можете вызвать другую функцию (или код Java) для упрощения вещей.

Но я, честно говоря, считаю, что вы слишком усложняете свои тесты.

...