Jest测试Fat Arrow在课堂上错过了这个

时间:2018-03-09 14:30:04

标签: javascript reactjs this jestjs es2017

我正在为Jest中的Component编写单元测试,而我目前只是在测试功能。

类功能如下:

class Comp extends Component {

    fetch = null;

    update = async () => {
        try {
            if(this.fetch)
                this.fetch.cancel();

            // Do stuff
            this.fetch = createFetch();

            await this.fetch();
        } catch (e) {
            console.log('Error in update!!!', e);
        }
    }

    render() {
        return(
             <div></div>
        )
    }
}

开玩笑测试如下:

test('Should call fetch.cancel if fetch exists', async () => {
    const spy = jest.fn();
    const comp = new Comp();

    comp.fetch = {cancel: spy};

    await comp.update();

    expect(spy).toHaveBeenCalledTimes(1);
});

但是我从更新功能中得到了这个错误:

  

更新错误!!! ReferenceError:_this3未定义

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:2)

我认为问题不是Jest中的箭头函数,而是Comp类中的class属性。看看这个:http://babeljs.io/docs/plugins/transform-class-properties

编辑:设置规格模式后,它有效:http://2ality.com/2017/01/babel-esm-spec-mode.html

  

在此模式下转换的模块符合规范   可以不使用ES6代理