带有Jest的mongo-db内存服务器



我正试图为mongodb内存服务器的POC编写一个示例应用程序,但不幸的是它不起作用。我检查了几个链接和博客,但似乎对所有人都有效的代码对我来说不起作用。即使将超时时间增加到1分钟,Jest测试也会超时。getConnectionString或getUrl都会超时。我怀疑这个mongodb内存服务器从未启动过。

以下是测试的DB处理程序

我正在使用Windows 10

const mongoose = require('mongoose');
const { MongoMemoryServer } = require('mongodb-memory-server');
const mongoUnit = require('mongo-unit');
const mongod = new MongoMemoryServer();
jest.setTimeout(60000);

module.exports.connect = function(callback) {
mongod.getUri().then((mongoUri) => {

const mongooseOpts = {
autoReconnect: true,
reconnectTries: Number.MAX_VALUE,
reconnectInterval: 1000,
};

mongoose.connect(mongoUri, mongooseOpts);

mongoose.connection.on('error', (e) => {
if (e.message.code === 'ETIMEDOUT') {
console.log(e);
mongoose.connect(mongoUri, mongooseOpts);
}
console.log(e);
});

mongoose.connection.once('open', () => {
console.log(`MongoDB successfully connected to ${mongoUri}`);
callback();
});
});
}

module.exports.closeDatabase = async () => {
await mongoose.connection.dropDatabase();
await mongoose.connection.close();
await mongod.stop();
}


module.exports.clearDatabase = async () => {
const collections = mongoose.connection.collections;

for (const key in collections) {
const collection = collections[key];
await collection.deleteMany();
}
}

检查此问题:https://github.com/nodkz/mongodb-memory-server/issues/344

我今天也遇到了同样的问题。我通过从旧版本的node_modules/.cashe/mongodb内存服务器/mongodb-binarys/latest中替换mongod.exe来解决这个问题。但我认为正确的方法是在包.json:中声明旧版本

"config": {
"mongodbMemoryServer": {
"version": "4.2.3"
}
},

最新更新