【问题标题】:Jest testing fails on double colon开玩笑测试在双冒号上失败
【发布时间】:2018-07-20 12:54:38
【问题描述】:

尝试使用 Jest 测试 React 应用。运行我的代码时出现错误:

 FAIL  src\App.test.js
  ● Test suite failed to run

    C:/Users/user1/Projects/map-editor/src/App.js: Unexpected token (40:33)
        38 |         <div className="Main-content">
        39 |           <Sidebar
      > 40 |             parentOnCreatePoint={::this.handleSidebarCreateCallback}
           |                                  ^
        41 |             parentOnChangePoint={::this.handleSidebarChangeCallback}

我的 bable webpack 配置如下所示:

plugins: ['transform-runtime'],
presets: ['env', 'react', 'stage-0','stage-2'],

我该如何解决?

【问题讨论】:

  • 阅读here for more info on the :: operator。我要补充一点,将回调绑定在这样的反应渲染方法中是一个非常的坏主意。这意味着您创建了一个新方法,每个渲染和反应都无法优化,因为道具正在改变。
  • @caesay 好的,谢谢。不知道,改成标准的.bind(this)。
  • 你没有抓住重点,你不应该在这样的反应道具中使用.bind(。您应该在组件构造函数中执行此操作。每次调用bind 时,都会创建一个新函数。 daveceddia.com/avoid-bind-when-passing-props

标签: javascript reactjs babeljs jestjs ecmascript-next


【解决方案1】:

1) 将您的 babel 配置放入 .babelrc 文件而不是 webpack 配置中

2) 将babel-jest 包添加到您的项目中:

npm install --save-dev babel-jest

3) 将转​​换器添加到您的 jest.config.js:

'transform': {
    '^.+\\.jsx?$': 'babel-jest',
}

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 2017-11-19
    • 2020-10-08
    • 2020-08-19
    • 2021-05-02
    • 2017-02-11
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多