标签: babel-jest

Web Worker - 玩笑 - 无法在模块外部使用“import.meta”

我正在开发一个nextjs 10.1.3内置的网络应用程序。我们实施了一个网络工作人员来提高其中一个页面的性能,并且计划继续添加更多工作人员;此外,所有代码都经过了正确的单元测试,并且使用worker-loader以前的 webpack 版本(第 4 版及以下版本)我们能够对其进行测试。

随着新的 webpack 5 版本,worker-loader不再需要该插件;相反,使用新版本加载 Web Worker 的方法是new Worker(new URL("@/workers/task.worker.js", import.meta.url));

这样做,我的代码可以按预期工作npm build && npm start;但是,当我尝试添加相应的单元测试时,出现以下错误:Cannot use 'import.meta' outside a module并且所有发生的事情都是因为import.meta.url用于在浏览器中添加工作人员的位置。

我在网上读了很多有关的帖子,babel但我想摆脱这个选项。还有其他选择来嘲笑import.meta.url笑话吗?

任何帮助将非常受欢迎。这是当前的配置。

包.json

{
  ...
    "@babel/core": "^7.8.6",
    "next": "^10.1.3",
    "react": "^16.13.0",
    "webpack": "^5.37.1"
    "devDependencies": {
        ...
        "enzyme": "^3.11.0",
        "enzyme-adapter-react-16": "^1.15.2",
        "jest": "^24.9.0",
        "jest-cli": "^25.1.0",
        ...
    }
  ...
}
Run Code Online (Sandbox Code Playgroud)

next.config.js

const {
...
} = process.env;

const …
Run Code Online (Sandbox Code Playgroud)

reactjs webpack jestjs babel-jest next.js

6
推荐指数
1
解决办法
7395
查看次数

如何调试 babel-jest 的 Jest 的transformIgnorePatterns?

我一直在调整我的transformIgnorePatterns设置,但我的计算机在测试中速度减慢到崩溃的程度。从一开始,它就不是一台出色的机器,但它以前从未表现得如此糟糕。

不管怎样,我希望调试这对我的 Jest 操作有何影响。具体来说,我想看看 babel-jest 在执行时正在编译什么,这样我就可以知道我是否搞砸了一些事情。有什么方法可以在日志中看到这种调试输出吗?

jestjs babel-jest

6
推荐指数
0
解决办法
264
查看次数

Babel 和 Jest 配置:SyntaxError:无法在模块外部使用 import 语句

我正在开发一个 Ruby on Rails 7 应用程序,其中包含一些使用 lit 元素编写的 JS Web 组件。我正在尝试将 Jest 添加到项目中,以便我们可以对 Web 组件进行单元测试。

\n

不使用 Typescript,只使用普通 JS。我正在运行节点 v18.12.1,npm v9.2.0。

\n

我按照 Jest 网站上的初始入门步骤进行操作:

\n
npm install --save-dev jest\n
Run Code Online (Sandbox Code Playgroud)\n

然后添加"scripts": { "test": "jest" }package.json.

\n

我创建了一个简单的测试来尝试一下,它通过了,没有错误。

\n

然而,当我为导入 lit ( ) 的自定义 Web 组件之一添加测试后import {LitElement} from \'lit\';,我收到以下错误:

\n
Jest encountered an unexpected token\n\n    Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, …
Run Code Online (Sandbox Code Playgroud)

javascript jestjs babel-jest

6
推荐指数
1
解决办法
6624
查看次数

笑话快照在本地工作,但在Travis CI上始终失败

我的Jest快照测试在Travis上始终失败,具有以下区别:

-      "_instance": Constructor {
+      "_instance":  {
Run Code Online (Sandbox Code Playgroud)

开发依赖项包括:

"babel-jest": "^19.0.0",
"jest": "^19.0.2",
"react-addons-test-utils": "^15.4.2",
"babel-preset-es2015": "^6.22.0",
"babel-preset-react": "^6.23.0",
"react-test-renderer": "^15.4.2",
"enzyme": "^2.7.1",
"enzyme-to-json": "^1.5.0",
"react": "^15.2.0",
"react-dom": "^15.2.1"
Run Code Online (Sandbox Code Playgroud)

在本地和Travis上使用Node 7.0.0。

有任何想法吗?

travis-ci reactjs jestjs enzyme babel-jest

5
推荐指数
1
解决办法
2897
查看次数

开玩笑--watch始终运行所有测试

我最近从摩卡咖啡转到了Jest。除了始终运行所有测试的监视模式以外,其他所有功能都正常运行(不仅是文档中所说的与未提交文件相关的测试)。我已经搜索了文档,并使用了google,但没有找到有关此问题的任何信息。

我开玩笑的配置是

  "jest": {
    "coveragePathIgnorePatterns": [
      "/node_modules/",
      "/generated/",
      "/mock/",
      "/tools/",
      "/transactions/"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 90,
        "functions": 90,
        "lines": 90,
        "statements": 90
      }
    },
    "resetMocks": true,
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    "moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/src/__mocks__/fileMock.js",
      "\\.(css|less|scss)$": "<rootDir>/src/__mocks__/styleMock.js"
    },
    "setupTestFrameworkScriptFile": "<rootDir>/tools/setupTest.js"
  },
Run Code Online (Sandbox Code Playgroud)

setupTestFrameworkScriptFile只包含一行:

require('babel-polyfill');
Run Code Online (Sandbox Code Playgroud)

Babelrc:

 "env": {
    "test": {
      "plugins": [
        "rewire",
        "transform-class-properties",
        "transform-es2015-modules-commonjs"
      ],
      "presets": [
        "es2017",
        "react",
        "stage-0",
        "es2015"
      ]
    }
  }
Run Code Online (Sandbox Code Playgroud)

我从开始测试,jest --watch并显示消息“确定要运行的测试套件”,但是即使没有提交任何文件,也将运行所有测试。

我在Windows 7上,并且在powershell中运行命令。节点版本:v6.9.1
Jest版本:"babel-jest": "20.0.3", …

jestjs babel-jest

5
推荐指数
1
解决办法
749
查看次数

ReactTestRenderer:永久违反:getNodeFromInstance:无效参数

我正在开玩笑,以便使用快照测试。

我在react-test-renderer中遇到了一个错误,Invariant Violation:getNodeFromInstance:Invalid parameter。

最少的代码即可复制错误:

import React from 'react';
import DateTime from 'react-datetime';
import CalendarContainer from 'react-datetime/src/CalendarContainer';

export default class CalendarTimer extends DateTime {

    render() {
        return ( <div className = "rdtPicker" >
                  <CalendarContainer view = {
                    this.state.currentView
                  }/>
                </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

这是测试规格文件

import React from 'react';
import renderer from 'react-test-renderer';
import CalendarTimer from 'components/Input/CalendarTimer';

describe('CalendarTimer', () => {
    it('rendered Calendar', () => {
        const calendarTimer = renderer.create( <
            CalendarTimer / >
        );
        expect(calendarTimer).toMatchSnapshot();
    });
});
Run Code Online (Sandbox Code Playgroud)

错误:

  ? CalendarTimer …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs jestjs babel-jest

5
推荐指数
1
解决办法
2362
查看次数

React Jest - 意外的令牌导入

我正在学习反应,我想测试我的一个组件,但我遇到了这个错误:

{import React from 'react';                                                                                   
^^^^^^
SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)

以下是我在阅读stackoverflow和github上的文章时尝试过的一些内容

添加了测试预设和这些插件"transform-es2015-modules-commonjs",dynamic-import-node"到我的babel配置

{
  "presets":  ["es2015", "react"],
  "env": {
  "test": {
      "presets":[
        ["es2015", { "modules": false }],
         "stage-0",
        "react"],
      "plugins": [
        "transform-es2015-modules-commonjs",
        "dynamic-import-node"
      ]
    }
}
}
Run Code Online (Sandbox Code Playgroud)

在我的package.json中,Jest属性具有以下设置:

"jest": {
    "verbose": true,
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "jsx",
      "js"
    ],
   "transform": {},
    "moduleDirectories": [
      "node_modules"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!react)/"
    ],
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$"
  },
Run Code Online (Sandbox Code Playgroud)

我的实际组件是用ES6和打字稿构建的,如果这有助于你帮助我:)

从我读过的内容来看,导入时似乎开玩笑,因为节点不了解ES6导入.我在网上尝试过的解决方案似乎都没有效果.

这里还有我的开发依赖项:

"devDependencies": {
    "awesome-typescript-loader": "^3.2.2",
    "babel-cli": "^6.24.1",
    "babel-core": "^6.25.0",
    "babel-eslint": "^7.2.3",
    "babel-jest": "^20.0.3", …
Run Code Online (Sandbox Code Playgroud)

unit-testing ecmascript-6 reactjs jestjs babel-jest

5
推荐指数
1
解决办法
3088
查看次数

Jest套件不为快照差异输出颜色

我刚刚注意到我正在研究的一个项目,即快照输出没有通过颜色输送到终端.在一般的玩笑框架确实有颜色.所以我很困惑:

在此输入图像描述

应该是什么样的

这是相关包的列表:

"babel-jest": "^21.0.2",
"enzyme": "^3.1.0",
"enzyme-adapter-react-16": "^1.0.1",
"enzyme-to-json": "^3.3.1",
Run Code Online (Sandbox Code Playgroud)

这是 jest.config.js

module.exports = {
  setupTestFrameworkScriptFile: './setupTestFramework',
  verbose: true,
  snapshotSerializers: ['enzyme-to-json/serializer'],
  coverageReporters: [
    'lcov',
  ],
  collectCoverageFrom: [
    'src/**/*.{js,jsx}',
    'stories/**/*.{js,jsx}',
    '!**/node_modules/**',
    '!**/vendor/**',
  ],
  coverageDirectory: './',
};
Run Code Online (Sandbox Code Playgroud)

setupTestFramework文件:

import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import 'intersection-observer';

configure({ adapter: new Adapter() });
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.

更新:适用于单个文件

输出彩色快照:

yarn test <filepath>

不输出彩色快照:

yarn test

(我的yarn test命令是NODE_PATH=\"./src\" jest --colors)

jest enzyme babel-jest enzyme-to-snapshot

5
推荐指数
0
解决办法
314
查看次数

Babel Unknown选项:.caller

当我运行npm start babel抛出以下错误:ReferenceError:未知选项:.caller.查看http://babeljs.io/docs/usage/options/了解有关选项的更多信息.

我的package.json:

{
"private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "moment": "^2.20.1",
    "prop-types": "latest",
    "react": "^16.5",
    "react-native": "^0.57",
    "react-native-material-textfield": "^0.12.0",
    "react-native-material-ui": "^1.30.1",
    "react-native-off-canvas-menu": "^0.1.32",
    "react-native-pull-refresh": "^1.0.0",
    "react-native-size-matters": "^0.1.4",
    "react-native-snackbar": "^0.5.3",
    "react-native-snap-carousel": "^3.7.5",
    "react-native-vector-icons": "^6.0.2",
    "react-navigation": "^2.18.0",
    "react-redux": "^5.0.6",
    "redux": "^4.0.1",
    "redux-persist": "^5.5.0",
    "redux-thunk": "^2.2.0",
    "ree-validate": "^3.0.2"
  },
  "devDependencies": {
    "@babel/core": "7.0.0-beta.42",
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "^0.48.1",
    "react-test-renderer": "16.5.2"
  },
  "jest": {
    "preset": "react-native"
  },
  "rnpm": { …
Run Code Online (Sandbox Code Playgroud)

babel reactjs babeljs react-native babel-jest

5
推荐指数
1
解决办法
2388
查看次数

Jest 24.0.0插件/预设文件不允许导出对象,仅可导出功能

从Jest 23.6.0升级到24.0.0后,出现此错误: Plugin/Preset files are not allowed to export objects, only functions.

这是由以下提交引起的:https : //github.com/facebook/jest/pull/7203/files ,记录了重大更改。

对于使用的我们来说require,尚不清楚我们需要在存储库中进行哪些更改以解决此问题。

关于堆栈溢出,这里有很多类似的问题,但是没有一个问题让我找到了解决方案...

jestjs babel-jest

5
推荐指数
1
解决办法
1192
查看次数