class 中的开玩笑测试 Fat Arrow 缺少这个
Jest test Fat Arrow in class missing this
我正在为 Jest 中的组件编写单元测试,目前我只是在测试功能。
class函数如下:
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);
});
但是我从更新函数中得到这个错误:
Error in update!!! ReferenceError: _this3 is not defined
谁能帮我解决这个问题?
我假设问题不是 Jest 中的箭头函数,而是你的 Comp class 中的 class 属性。看看这个:http://babeljs.io/docs/plugins/transform-class-properties
编辑:设置规范模式后有效:http://2ality.com/2017/01/babel-esm-spec-mode.html
Modules transpiled in this mode conform as closely to the spec as is
possible without using ES6 proxies
我正在为 Jest 中的组件编写单元测试,目前我只是在测试功能。
class函数如下:
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);
});
但是我从更新函数中得到这个错误:
Error in update!!! ReferenceError: _this3 is not defined
谁能帮我解决这个问题?
我假设问题不是 Jest 中的箭头函数,而是你的 Comp class 中的 class 属性。看看这个:http://babeljs.io/docs/plugins/transform-class-properties
编辑:设置规范模式后有效:http://2ality.com/2017/01/babel-esm-spec-mode.html
Modules transpiled in this mode conform as closely to the spec as is possible without using ES6 proxies