自定义节点环境中意外的令牌导入

2024-03-26

我得到了SyntaxError: Unexpected token import当使用我的自定义类扩展时NodeEnvironment。当不使用自定义测试环境时,现代 JavaScript - ES 模块等可以正常工作。

我正在使用节点8.11.1和纱线1.6.0.

这是完整的错误:

$ jest --no-cache
FAIL  __tests__/math.js
  ● Test suite failed to run

    /home/user/workspace/web/jest-custom-environment-no-import/__tests__/_helpers_/environments/integration.js:1
    (function (exports, require, module, __filename, __dirname) { import NodeEnvironment from 'jest-environment-node';
                                                                  ^^^^^^

    SyntaxError: Unexpected token import

      at node_modules/jest-runner/build/run_test.js:31:29

这是我的.babelrc:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        },
        "shippedProposals": true
      }
    ]
  ]
}

And the jest我的一部分package.json:

"jest": {
  "testEnvironment": "./__tests__/_helpers_/environments/integration.js",
  "testPathIgnorePatterns": ["/node_modules/", "/_helpers_/"],
  "verbose": true
}

自定义环境:

import NodeEnvironment from 'jest-environment-node';

export default class IntegrationEnvironment extends NodeEnvironment {
  async setup() {
    await super.setup();
  }

  async teardown() {
    await super.teardown();
  }

  runScript(script) {
    return super.runScript(script);
  }
}

我还创建了一个GitHub 仓库 https://github.com/j-klassen/jest-custom-environment-no-import这说明了这个问题。


我使用创建了一个合理的解决方法esm https://www.npmjs.com/package/esm。我创建了一个加载 esm 的附加文件,该文件加载我的自定义 Jest 环境。

My package.json现在包含:

"jest": {
  "testEnvironment": "./__tests__/_helpers_/environments/integration.index.js",
  "testPathIgnorePatterns": ["/node_modules/", "/_helpers_/"],
  "verbose": true
}

文件./__tests__/_helpers_/environments/integration.index.js包含:

// eslint-disable-next-line no-global-assign
require = require('esm')(module);

module.exports = require('./integration').default;

./__tests__/_helpers_/environments/integration.js保持不变。

一个工作示例可以在欧洲安全管理分会 https://github.com/j-klassen/jest-custom-environment-no-import/tree/esm我原来的仓库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义节点环境中意外的令牌导入 的相关文章

  • 如何使用 Jest 和 vue/test-utils 测试输入文件

    我想使用 Jest 和 vue test utils 测试文件上传器组件 我有这个 describe show progress bar of uploading file gt const wrapper mount FileUpload
  • 使用 Jest 模拟 jsonwebtoken 模块

    我尝试用玩笑来模拟 npm 模块 jsonwebtoken 的验证功能 该函数返回一个已解码的令牌 但我想将此函数的自定义返回传递给我的单元测试 我明确请求在继续请求之前检查访问令牌的有效性 但我想模拟令牌检查的时刻以直接返回用户值 并且轻
  • Jest TypeError:不是 Jest.mock 中的构造函数

    我正在尝试使用 jest 编写一个单元测试用例 并且需要模拟以下模式 我收到 TypeError 不是构造函数 用例 我的用例如下所述 我的组件 js import serviceRegistry from external service
  • 仅 Detox 测试启动画面

    我正在我的 React Native 项目上运行 detox 并且只能测试启动屏幕 启动屏幕进入登录屏幕 但排毒代码不允许我测试此元素 测试代码 describe Splash gt beforeEach async gt await de
  • 测试使用 jQuery 和 window 对象的 React 组件

    我的 React 组件必须响应resize事件 我使用 jQuery 即 componentDidMount function window on resize function 然而 这会导致我的 Jest 测试出现问题 具体来说 Typ
  • 运行 Jest 时 NextJS 中未定义环境变量

    我设置了一个简单的 NextJS 项目 但在让 Jest 识别我的环境变量时遇到问题 我已按照以下说明进行操作https nextjs org docs basic features environment variables test e
  • Jest 在没有 webpack 的情况下配置 typescript

    好吧 我正在用 typescript 编写一些 NPM 模块 但我没有使用 Webpack 来编译脚本 我应该如何配置 jest 才能使用打字稿文件正确运行 test spec ts import calc from index test
  • Docker CI 无法与 mongodb-memory-server 一起使用

    我使用 mongodb memory server 测试了 mongo 中的一些存储库功能 并在本地计算机上成功运行了单元测试 但是当将此代码推送到 GitHub 时 它运行失败 我不确定问题是关于 docker 配置还是关于 mongod
  • vscode jest 扩展无法正常工作

    我正在与VSCode并安装了扩大 Jest 为了更好的笑话测试环境 在扩展的指令中我看到我们得到了很好的智能感知支持对于杰斯特的命令 问题 我在底部栏上没有看到 Jest 图标 这意味着文本无法正常工作 我仍然没有得到对 jest 命令的智
  • Vue-Test-Utils 未知的自定义元素:

    我正在使用 Jest 利用 vue test utils 库运行我的测试 尽管我已将 VueRouter 添加到 localVue 实例 但它说它实际上无法找到 router link 组件 如果代码看起来有点奇怪 那是因为我使用的是 Ty
  • 获取 `TypeError: jest.fn 不是一个函数`

    我正在尝试使用 Jest 创建以下单元测试 jest dontMock pointsAwardingActions js describe points awarding actions gt describe award points g
  • MongoError:池正在耗尽,在集成测试中使用 MongoMemoryServer 时禁止新操作

    我在用着MongoMemoryServer编写集成测试 我有两个集成测试文件 当我运行 IT 测试时 我看到以下内容 我不明白为什么 我正在使用 jestjs 测试框架 当我有两个 IT 测试文件时 我看到以下错误 MongoError p
  • 如何测试从父组件传递的子组件中的回调单击?

    我有以下父组件 import React Fragment from react export class Parent extends Component constructor props super props this state
  • 玩笑测试因 refs 和 Form 失败

    我有一个搜索栏组件 如下所示 render const onChangeTextInput this props return
  • CI 中带有打字稿路径的玩笑“找不到模块”

    在 Gitlab CI 环境中 我们的 Jest 测试中有 2 个失败 并显示Cannot find module 奇怪的是 它可以在我本地的 Win10 机器上运行 即使我在类似的 docker container 中运行测试 node
  • 安装react-native-async-storage后玩笑测试失败

    在我的React Native项目中 我最近安装了节点模块react native async storage 因为我收到了有关 react native 的本机包已被弃用并移出到单个模块的警告 安装后 react native commu
  • 在 Jest 测试中设置时刻时区

    我有 util 函数 它以特定的日期格式解析给定的日期 即 2019 01 28 然后使用momentJS检索当天的开始并将其转换为 ISO 日期格式 dates js import moment from moment export co
  • 如何使用 Jest 测试 swiper?

    我正在使用 Jest 创建 Swiper 的单元测试 这是我的代码 https codesandbox io s swiper default react forked v0dnz file src App test jsx https c
  • 使用 TFS 2015 运行 Jest 单元测试

    有人尝试将 jest 单元测试与 TFS 2015 集成吗 我尝试使用 Chutzpah 测试适配器 https visualstudiogallery msdn microsoft com f8741f04 bae4 4900 81c7
  • Jest - 模拟函数,从另一个文件导入

    测试的文件使用从另一个文件导入的函数 import myFunc from myFile 如何在该文件的测试中模拟该函数的返回值 我正在使用笑话 这对我有用 我不确定这是否是一个好的做法 import as myFile from myFi

随机推荐