javascript - Typescript Jest测试中来自ol-ext的'SyntaxError:Unexpected identifier'

标签 javascript typescript jestjs openlayers

我在我的应用程序中使用openlayers扩展库ol-ext。当我运行应用程序时,它运行良好,但是尝试运行测试时遇到问题。当运行测试并尝试创建对象时,我得到以下信息:

({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import ol_ext_inherits from '../util/ext'
                                                                                                    ^^^^^^^^^^^^^^^
    SyntaxError: Unexpected identifier



      at ScriptTransformer._transformAndBuildScript (../../../node_modules/@jest/transform/build/ScriptTransformer.js:471:17)
      at ScriptTransformer.transform (../../../node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
      at Object.<anonymous> (src/private/geomap-ol/interaction-edit.ts:1429:41)


我尝试在玩笑的配置中修改我的“ transformIgnorePatterns”以包括ol-ext,但这导致了openlayers无法解决的问题:

当前jestconfig.json:

{
    "transform": {
        "^.+\\.tsx?$": "ts-jest",
        "^.+\\.jsx?$": "babel-jest",
        "^.+\\.svg$": "jest-svg-transformer",
        "^.+\\.xml$": "jest-raw-loader"
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
    "moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"],
    "collectCoverage": true,
    "collectCoverageFrom": ["src/**/*.{js,ts,jsx,tsx}"],
    "coveragePathIgnorePatterns": ["<rootDir>/src/index.ts", "<rootDir>/node_modules/"],
    "transformIgnorePatterns": ["node_modules/(?!(ol)/)"],
    "testEnvironment": "jest-environment-jsdom-fifteen",
    "setupFiles": ["jest-canvas-mock"]
}


尝试过jestconfig.json:

{
    ...
    "transformIgnorePatterns": ["node_modules/(?!(ol|ol\\-ext)/)"],
    ...
}




"transformIgnorePatterns": ["node_modules/(?!(ol|ol\\-ext)/)", "node_modules/(?!(ol\\-ext)/)"],


这两个版本都导致ol库也停止被忽略。

babel.config.js:

module.exports = {
    presets: [
        [
            '@babel/preset-env',
            {
                targets: {
                    node: 'current',
                },
            },
        ],
    ],
};


我期望ol-ext库也可以在测试期间使用,这样我就不会有大量未经测试的代码。

最佳答案

jest.config.js

module.exports = {
  transform: {
    '^.+\\.ts$': 'ts-jest'
  },
  moduleFileExtensions: [
    'js',
    'ts'
  ],
  testMatch: [
    '**/test/**/*.test.(ts|js)'
  ],
  testEnvironment: 'node'
}


package.json

{
  // ...
  "scripts": {
    "test": "jest --verbose",
    "test-watch": "jest --verbose --watchAll",
    // ...
  }
  // ...
}

关于javascript - Typescript Jest测试中来自ol-ext的'SyntaxError:Unexpected identifier',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513557/

相关文章:

javascript - 如何以设定的频率调用 promise ?

javascript - 创建 Letter 字符串和字符串长度

typescript - 'value' 类型的值不存在属性 'HTMLElement'

node.js - stripe connect 创建客户的正确电话号码格式

javascript - Jest、env 预设和 stage-0 功能

javascript - 在 react Jest 中测试文件上传

reactjs - 如何使用 Jest 和 Enzyme 模拟 React 组件生命周期方法?

JavaScript:在 'break' 循环内模拟 'foreach'

javascript - 比较 Rails 和 JavaScript 中的日期

javascript - 如何使用返回http promise的angular 2服务