Я использую каратэ для проверки ответа конечной точки. И мой API отвечает структурой ключ-значение. Проблема в том, что значение может быть логическим или строковым.
Как я могу проверить это только с одним выражением ИЛИ с каратэ?
Пример ответа:
{
"value": true,
"key": "key1"
},
{
"value": "This is my value",
"key": "key2"
}
Я пробовал такие вещи, как
onfStructure: "#? _ == ^*(confStructure1 || confStructure2)"
confStructure1:
value: "#boolean"
key: "#string"
confStructure2:
value: "#string"
key: "#string"
или
confStructure: "#? _ == (^*confStructure1 || ^*confStructure2)"
или
confStructure:
value: "#(^*newSchema)"
key: "#string"
newSchema:
value: "#boolean"
value: "#string"
Но ничего не работает.
Это единственный способ, который я могу придумать, чтобы решить эту проблему. Иногда «шаблоны» каратэ не могут быть использованы. Честно говоря, большинство API никогда не имеют таких вариаций схемы.
* def response = [{value: 'foo'},{value: true}]
* match each response == { value: "#? typeof _ == 'string' || typeof _ == 'boolean'" }
Благодарю вас! этот тип был решением! :D