Javascript 为什么Jest遇到了意外的标记?
我不太熟悉Jest测试,我编写了一个小user.test.jsJavascript 为什么Jest遇到了意外的标记?,javascript,jestjs,Javascript,Jestjs,我不太熟悉Jest测试,我编写了一个小user.test.js const mongoose = require('mongoose'); const UserModel = require('../models/User'); const userData = { username: 'TekLoon', email: 'jon@aol.com' }; describe('User Model Test', () => { beforeAll(async () => {
const mongoose = require('mongoose');
const UserModel = require('../models/User');
const userData = { username: 'TekLoon', email: 'jon@aol.com' };
describe('User Model Test', () => {
beforeAll(async () => {
await mongoose.connect(global.__MONGO_URI__, { useNewUrlParser: true, useCreateIndex: true }, (err) => {
if (err) {
console.error(err);
process.exit(1);
}
});
});
it('create & save user successfully', async () => {
const validUser = new UserModel(userData);
const savedUser = await validUser.save();
// Object Id should be defined when successfully saved to MongoDB.
expect(savedUser._id).toBeDefined();
expect(savedUser.username).toBe(userData.username);
expect(savedUser.email).toBe(userData.email);
});
});
目录结构
globalConfig.json
index.js
models
node_modules
package.json
package-lock.json
__tests__
当我运行npm运行测试时
FAIL .history/__tests__/user.test_20201027153457.js
● Test suite failed to run
Jest encountered an unexpected token
Details:
SyntaxError: /home/milenko/pract/post/.history/__tests__/user.test_20201027153457.js: Unexpected token (26:7)
24 | expect(savedUser.username).toBe(userData.username);
25 | expect(savedUser.email).toBe(userData.email);
> 26 | });
| ^
我听从了克里斯蒂安的建议,问题又来了
FAIL __tests__/jest-mongodb-config.js
● Test suite failed to run
Your test suite must contain at least one test.
at onResult (node_modules/@jest/core/build/TestScheduler.js:175:18)
at node_modules/@jest/core/build/TestScheduler.js:304:17
at node_modules/emittery/index.js:260:13
at Array.map (<anonymous>)
at Emittery.Typed.emit (node_modules/emittery/index.js:258:23)
FAIL __tests__/jest.config.js
● Test suite failed to run
Your test suite must contain at least one test.
at onResult (node_modules/@jest/core/build/TestScheduler.js:175:18)
at node_modules/@jest/core/build/TestScheduler.js:304:17
at node_modules/emittery/index.js:260:13
at Array.map (<anonymous>)
at Emittery.Typed.emit (node_modules/emittery/index.js:258:23)
FAIL\uuuu测试\uuu/jest-mongodb-config.js
● 测试套件无法运行
您的测试套件必须至少包含一个测试。
在onResult(node_modules/@jest/core/build/TestScheduler.js:175:18)
在node_modules/@jest/core/build/TestScheduler.js:304:17
在node_modules/emittery/index.js:260:13
at Array.map(
需要逗号吗
如何解决此问题?您需要在description
和之前添加右括号
const mongoose = require('mongoose');
const UserModel = require('../models/User');
const userData = { username: 'TekLoon', email:'jon@aol.com' };
describe('User Model Test', () => {
beforeAll(async () => {
await mongoose.connect(global.__MONGO_URI__, { useNewUrlParser: true, useCreateIndex: true }, (err) => {
if (err) {
console.error(err);
process.exit(1);
}
});
}) // added closing parenthesis
it('create & save user successfully', async () => {
const validUser = new UserModel(userData);
const savedUser = await validUser.save();
// Object Id should be defined when successfully saved to MongoDB.
expect(savedUser._id).toBeDefined();
expect(savedUser.username).toBe(userData.username);
expect(savedUser.email).toBe(userData.email);
});
}); // added closing parenthesis
我设法解决了这个问题。编译器的行为在某种程度上具有误导性。解决方法是
包含此内容的jest.config.js
module.exports = {
preset: '@shelf/jest-mongodb',
};
和jest-mongodb-config.js
module.exports = {
mongodbMemoryServerOptions: {
instance: {
dbName: 'jest'
},
binary: {
version: '4.4.1',
skipMD5: true
},
autoStart: false
}
};
在项目目录中(tests仅为测试文件保留)。
现在工作正常(简单示例)
您似乎至少漏掉了两个括号,一个用于描述块,另一个用于之前的@Christian请查看我的编辑!谢谢,无论如何,我又遇到了类似的问题。仍然有语法错误。请根据建议的编辑更新问题中的代码。另外,更改连接代码>调用以避免混合使用await
和回调样式:尝试{
await mongoose.connect(全局.uuu MONGO\u URI uuuuu,{useNewUrlParser:true,useCreateIndex:true})
捕获(err){
控制台.错误(err);
进程.退出(1)
tests__/user.test.js
User Model Test
✓ create & save user successfully (19 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.895 s, estimated 2 s
Ran all test suites.