说,我有一个对象
const obj1 = {name:expect.any(String)}
后端返回响应如下,对象将键'age'作为可选键
const response = {name:'bbb',age:10}
那么,我如何断言obj1将age作为可选键,这意味着如果它存在,它必须是数字类型,如果它不存在,我们可以省略检查?
期望(响应).toMatchObject(OBJ1);
答案 0 :(得分:1)
我认为没有内置函数,但这可以满足您的需求:
expect({age: 0, ...response}).toMatchObject(obj1);
(如果年龄不存在于对象中,它将假定为0;如果存在,它将使用当前值,因此,如果类型错误,则失败)
答案 1 :(得分:-1)
根据我的理解,你想检查一下如果定义了属性,检查它的类型是否为数字?如果该属性不存在,那么不检查属性类型?正确的吗?
假设上述理解是正确的,应该这样做:
const response = {name: "bbb", age:10};
if (response.age) {
if (typeof response.age === 'number') {
console.log("age is a number");
//your logic if age is a number
}
else {
//your logic in case age exists but its not a number
}
}
else {
//your logic in case age does not exist
}