【发布时间】:2023-03-16 22:27:02
【问题描述】:
我有一个使用 Jest 和 babel 的 NodeJS 项目。 当我运行测试时,我收到以下错误:
FAIL ./user.test.js
● Test suite failed to run.
SyntaxError: C:\Users\...\__test__\mocks\registerUser.json: Unexpected token, expected ";" (2:8)
当我将 registerUser.json 更改为 javascript 文件时,我可以毫无问题地检索内容,但是当我尝试使用 JSON 文件时将无法正常工作。
但是在使用 json 文件时,我似乎找不到错误的原因。
我目前的结构是这样的:
|-- src
|-- __test__
|-- mocks
|-- registerUser.json
|-- user.test.js
|-- tmp
.babelrc
.eslintignore
.eslintrc
.gitignore
.prettierrc
jest.config.js
package.json
user.test.js
const userRegisterMock = require('./mocks/registerUser.json');
describe('User', () => {
it('[SUCCESS] should be able to register', async () => {
// console.log(userRegisterMock)
expect(true).toBe(true);
});
});
jest.config.js
module.exports = {
bail: 1,
testEnvironment: 'node',
clearMocks: true,
collectCoverage: true,
collectCoverageFrom: [
'src/**',
'!src/helpers/**',
'!src/app.js',
'!src/server.js',
'!src/database/**',
'!src/config/**'
],
coverageDirectory: '__tests__/coverage',
coverageReporters: ['text', 'lcov'],
coverageThreshold: {
global: {
branches: 100,
functions: 100,
lines: 100,
statements: 100
}
},
moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node'],
resetModules: false,
testMatch: ['**/__tests__/**/*.test.js'],
transform: {
'.(js|jsx|ts|tsx)': 'babel-jest'
}
};
.babelrc
{
"presets": [
["@babel/preset-env", {
"useBuiltIns": "usage", // or "entry"
"corejs": 3,
"targets": {
"node": "current"
}
}]
],
"plugins": [
["@babel/plugin-transform-modules-commonjs"],
["@babel/plugin-transform-runtime", {
"regenerator": true
}]
]
}
registerUser.json
{
"name": "Test Case",
"country": "Brazil",
"birthdate": "25/03/1994",
"sex": "Masculino",
"nationality": "Brasileiro"
}
【问题讨论】:
-
你的模拟目录不是
mock不是mocks吗? -
这是一种打字,它是模拟而不是模拟。但错误仍然存在!
-
你玩的是什么版本的玩笑?如果是24.*,则不支持
json变换github.com/facebook/jest/issues/8426 -
我使用的是 25.4.0 版
-
你能创建一个 GitHub 存储库来重现吗,@bsantoss?
标签: javascript node.js unit-testing jestjs babel-jest