继承的原型函数不是函数

时间:2019-12-04 10:19:04

标签: javascript unit-testing ecmascript-6 jestjs prototypal-inheritance

我正在尝试围绕原型继承工作,但我无法弄清楚为什么我的代码会失败。我正在努力从对象原型继承该对象的对象上调用该函数。我的代码在下面...

const OBJ_PROTO = {
    myFunction(param = 'a') {
        if (['a', 'b'].includes(param)) {
             this.someVar = param;
        };
        return this.someVar;
    }
}

const obj = ({
    someVar = 'a'
} = {}) => Object.assign(Object.create(OBJ_PROTO), { someVar })

export default obj;

然后在测试中,我正在做...

import obj from './someFile'

test('testing my function', () => {
   const myObj = obj();

   expect(myObj.myFunction()).toBe('a')
});

该测试似乎失败,并且错误提示myFunction不是函数。正确运行Object.getPrototypeOf(myObj)会列出使我相信我在某个地方犯了一个愚蠢错误的函数。我为此而高兴地被烤。我知道用Jest测试像这样的简单代码是非常过分的,但这只是我想熟悉的另一件事。任何帮助是极大的赞赏!如果需要更多信息,请询问!

const OBJ_PROTO = {
    myFunction(param = 'a') {
        if (['a', 'b'].includes(param)) {
             this.someVar = param;
        };
        return this.someVar;
    }
}

const obj = ({
    someVar = 'a'
} = {}) => Object.assign(Object.create(OBJ_PROTO), { someVar })

const myObj = obj();

console.log(myObj.myFunction())

0 个答案:

没有答案