我正在开发一个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) 我一直在调整我的transformIgnorePatterns设置,但我的计算机在测试中速度减慢到崩溃的程度。从一开始,它就不是一台出色的机器,但它以前从未表现得如此糟糕。
不管怎样,我希望调试这对我的 Jest 操作有何影响。具体来说,我想看看 babel-jest 在执行时正在编译什么,这样我就可以知道我是否搞砸了一些事情。有什么方法可以在日志中看到这种调试输出吗?
我正在开发一个 Ruby on Rails 7 应用程序,其中包含一些使用 lit 元素编写的 JS Web 组件。我正在尝试将 Jest 添加到项目中,以便我们可以对 Web 组件进行单元测试。
\n不使用 Typescript,只使用普通 JS。我正在运行节点 v18.12.1,npm v9.2.0。
\n我按照 Jest 网站上的初始入门步骤进行操作:
\nnpm install --save-dev jest\nRun Code Online (Sandbox Code Playgroud)\n然后添加"scripts": { "test": "jest" }到package.json.
我创建了一个简单的测试来尝试一下,它通过了,没有错误。
\n然而,当我为导入 lit ( ) 的自定义 Web 组件之一添加测试后import {LitElement} from \'lit\';,我收到以下错误:
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) 我的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。
有任何想法吗?
我最近从摩卡咖啡转到了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", …
我正在开玩笑,以便使用快照测试。
我在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) 我正在学习反应,我想测试我的一个组件,但我遇到了这个错误:
{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) 我刚刚注意到我正在研究的一个项目,即快照输出没有通过颜色输送到终端.在一般的玩笑框架确实有颜色.所以我很困惑:
这是相关包的列表:
"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)
当我运行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) 从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,尚不清楚我们需要在存储库中进行哪些更改以解决此问题。
关于堆栈溢出,这里有很多类似的问题,但是没有一个问题让我找到了解决方案...
babel-jest ×10
jestjs ×8
reactjs ×5
enzyme ×2
javascript ×2
babel ×1
babeljs ×1
ecmascript-6 ×1
jest ×1
next.js ×1
react-native ×1
travis-ci ×1
unit-testing ×1
webpack ×1