javascript - 编写单元测试用例时箭头函数和普通函数有什么区别?

标签 javascript reactjs unit-testing jestjs enzyme

我正在创建一个 react 组件,在这个组件中我使用箭头函数来实现类方法和生命周期 Hook 。我正在为同一文件编写单元测试用例。但问题是, 当我用旧的 JavaScript 方式编写生命周期钩子(Hook)时,例如

componentDidMount(){
  ...Here
}

并运行测试覆盖率,然后该生命周期方法将自动覆盖。但是当我这样写时

componentDidMount = () => {
  ...Here    
}

并运行代码覆盖率,它未在单元测试中覆盖并显示“语句未覆盖”。

所以我的问题是,这两种方式在编写单元测试用例时有什么区别?

最佳答案

有一个很大的区别,第一个创建了一个方法,第二个创建了一个属性而不是方法,所以它不存在于原型(prototype)中。

您可以通过在构造函数中绑定(bind)它来使用它,但生命周期事件中的箭头函数会损害性能。

关于javascript - 编写单元测试用例时箭头函数和普通函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60187528/

相关文章:

javascript - Discord.js 嵌入后发送文件

javascript - React.js 移动网站在 Android 上的 Chrome 中卡住

python - 模拟使用不同参数调用两次的函数

Angular 服务单元测试 - 是否伪造嵌套方法?

javascript - 在reduce函数中使用函数参数: Javascript

javascript - 在 javascript 中,图像必须随 var lvl 更改,但事实并非如此

php - AngularJS HTTP 发布到 PHP 和未定义

javascript - React Grid Layout - 在第一次初始化后更新 Tinymce Editor 高度

javascript - 如何在 JS/React 中下载 mp4 视频?

unit-testing - 使用 Identity 2.0 数据库进行 Moq Mocking