karate.repeat creates a malformed JSON that is unable to traverse

Viewed 23

I have a scenario where I need to call a secondary feature file that contains an API call where the response is a JSON object. However, I need to call this scenario multiple times, so I am using karate.repeat to achieve this. However, the resulting response is a malformed JSON that I cannot traverse. This is what I am doing:

* def fun = function(i){ return karate.call('abc.feature@abc', value)}
* def loop = karate.repeat(2, fun)
* karate.log(loop)

The response I get is:

{
    "Total_packages1": {
        "package1": {
            "tags": [
                "kj21",
                "j1",
                "sj2",
                "z1"
            ],
            "expectedResponse": [
                {
                    "firstName": "Name",
                    "lastName": "lastName",
                    "purchase": [
                        {
                            "title": "title",
                            "category": [
                                "a",
                                "b",
                                "c"
                            ]
                        }
                    ]
                }
            ]
        }
    }
}
{
    "Total_packages2": {
        "package2": {
            "tags": [
                "kj212",
                "j12",
                "sj22",
                "z12"
            ],
            "expectedResponse": [
                {
                    "firstName": "Name2",
                    "lastName": "lastName2",
                    "purchase": [
                        {
                            "title": "title2",
                            "category": [
                                "a2",
                                "b2",
                                "c2"
                            ]
                        }
                    ]
                }
            ]
        }
    }
}

As you can see, Total_packages2 starts malformed. I need to grab the "tags" values from each package, however, I cannot simply do Total_packages1.package1.tags like I could with a single response in the JSON.

If I cannot achieve what I need by karate.repeat, is there another method that is recommended for looping like this? I haven't found anything in the documentation for this particular scenario.

1 Answers
Related