这是我的Jest配置:
"jest": {
"testEnvironment": "node",
"coveragePathIgnorePatterns": [
"/node_modules/"
]
},
这是我的测试
import request from 'supertest';
import { myapp } from '../src/index';
describe('Post Endpoints', () => {
it('should run api root', async () => {
const res = await request(myapp).get('/api/v1');
expect(res.statusCode).toEqual(200);
expect(res.body).toHaveProperty('version');
});
});
这是我的http服务器(express应用)的最后几行,在测试环境中监听3000:
...
import './mongodb';
...
if (process.env.NODE_ENV === 'production') server.listen(800 + process.env.NODE_APP_INSTANCE);
else if (process.env.NODE_ENV === 'test') server.listen(300 + process.env.NODE_APP_INSTANCE);
else server.listen(80, () => logger.info('? Single core development server started on 80.'));
export { server, myApp };
这是我的猫鼬文件:
import mongoose, { mongo } from 'mongoose';
import { mongodbURL, mongodbURLdev, mongodbURLdevRemote, mongodbURLtest, debugMode } from '../config/config.json';
import logger from '../lib/logger';
mongoose.Promise = global.Promise;
let env = process.env.NODE_ENV;
mongoose.set(`debug`, debugMode || env === 'production' ? false : true);
let dbURL =
env === 'production'
? mongodbURL
: env === 'development'
? mongodbURLdev
: env === 'developmentRemote'
? mongodbURLdevRemote
: mongodbURLtest;
try {
mongoose.connect(dbURL, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true
});
} catch (e) {
mongoose.createConnection(dbURL, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true });
}
mongoose.connection
.once('open', () => env !== 'production' && logger.info(`MongoDB is running in ${env} mode.`))
.on('error', e => {
logger.error('error on connect to mongo db.');
});
但是当我运行cross-env NODE_ENV=test NODE_APP_INSTANCE=0 jest --testTimeout=10000
路由器测试通过,但猫鼬会出错:
/node_modules/mongoose/lib/utils.js:422
throw err;
^
TypeError: clone is not a function
at format (/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:287:11)
at NativeCollection.$format (/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:253:10)
答案 0 :(得分:0)
我发现启用猫鼬调试模式是否会发生此错误。