Jest:如何测试可选对象键

时间:2018-06-01 07:03:20

标签: javascript jest

说,我有一个对象

  

const obj1 = {name:expect.any(String)}

后端返回响应如下,对象将键'age'作为可选键

  

const response = {name:'bbb',age:10}

那么,我如何断言obj1将age作为可选键,这意味着如果它存在,它必须是数字类型,如果它不存在,我们可以省略检查?

  

期望(响应).toMatchObject(OBJ1);

2 个答案:

答案 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
        }