Невозможно проанализировать значение переменной в переменной массива
Я пытался передать значение переменной 'i' в индекс массива 'местоположения [i]', используя приведенный ниже код каратэ. но выбрасывает ошибку, говоря не удалось разобрать. Пожалуйста, предложите быть за любые изменения.
Feature: Verify Branches
Background: For loop implementation
Given url ''
When method GET
Then status 200
* def i = 0
* def z = $.locations[i].zip
* def p = $.locations[i].phone
* def fun =
"""
function(locations){
for (var i = 0; i < locations.length; i++)
{
print(i)
print('Element at Location ' + i +':' + p)
}
}
"""
Scenario: Validate the locations
Given url ''
When method GET
Then status 200
* call fun p
1 ответ
Трудно что-либо разобрать, так как вы не указали ценность response
, Здесь много чего не так. Но я попытаюсь.
Возьми эту строку:
* def z = $.locations[i].zip
Это не будет работать, Карате не поддерживает переменные в JsonPath по умолчанию, обратитесь к документации: https://github.com/intuit/karate
И я думаю, что вы не обязательно используете JsonPath, где обычного JavaScript было бы достаточно:
* def z = response.locations[i].zip
Также кажется, что вы просто пытаетесь перебрать массив и вызвать функцию. Пожалуйста, обратитесь к документации по управляемым данными функциям.
Потратьте некоторое время и прочитайте документы и примеры, пожалуйста, это будет стоить вашего времени. Еще один совет - прежде чем я оставлю вас, чтобы немного лучше понять каратэ. Есть способ преобразовать массив JSON в другой массив JSON, если он вам понадобится:
* def fun = function(x){ return { value: x } }
* def list = [1, 2, 3]
* def res = karate.map(list, fun)
* match res == [{ value: 1 }, { value: 2 }, { value: 3 }]
Так что вам никогда не нужно будет делать вручную for
кругом на всех.