如何使用Frisby.js测试包含对象的可选数组?例如,假设我们有一个返回类似这样的API调用:
{
"id": "123",
"type": "A",
"list": [
{
"id": "111",
"size": 1
},
{
"id": "222",
"size": 2
}
]
}
但是,它也可能会返回以下内容:
{
"id": "456",
"type": "B"
}
目前,我正在尝试:
const frisby = require('frisby');
const Joi = frisby.Joi;
test('myTest', () => {
return frisby
.get(myUrl)
.expect('status', 200)
.expect('jsonTypes', {
id: Joi.string().required(),
type: Joi.string().required().
list: Joi.array().optional()
})
.expect('jsonTypes', 'list.*', {
id: Joi.string().required(),
size: Joi.number().required()
});
});
但是,这不起作用,因为如果list属性不存在,则不会定义路径(list . *) . 有任何想法吗?
1 回答
我有一个解决方法,直到有人找到一个更有效的方法 . 这种方法似乎效率低下,因为它需要多次API调用 . 要点是首先检查可选数组是否存在 . 如果是这样,您可以使用另一个API调用并使用该路径进行相应的检查 .