比如说,我下面有一个对象
const obj1 = {名称:expect.any(String)}
后端返回响应如下,对象键“age”作为可选键
const 响应 = {名称:'bbb',年龄:10}
那么,如何断言 obj1 将age作为可选键,这意味着如果它存在,它必须是数字类型,如果它不存在,我们可以省略检查?
期望(响应).toMatchObject(obj1);
我不认为有一个内置函数可以做到这一点,但是toMatchObject和解构可以满足您的需要:
expect({
age: 0,
...response
}).toMatchObject(obj1);
Run Code Online (Sandbox Code Playgroud)
如果age对象中不存在,则假定为 0;如果存在,它将使用当前值,因此如果类型错误,则会失败。
Hus*_*bar -4
据我所知,您想检查属性是否已定义,检查其类型是否为数字?如果该属性不存在,则不检查属性类型?正确的?
假设上面的理解是正确的,应该这样做:
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
}Run Code Online (Sandbox Code Playgroud)