Node.js 带Jest的mongo db内存服务器

Node.js 带Jest的mongo db内存服务器,node.js,mongodb,jestjs,Node.js,Mongodb,Jestjs,我正试图为mongodb内存服务器的POC编写一个示例应用程序,但不幸的是,它不起作用。我查看了几个链接和博客,但似乎所有的代码都不适合我。即使将超时时间增加到1分钟,Jest测试也会超时。getConnectionString或getUrl都会超时。我怀疑mongodb内存服务器从未启动过 下面是用于测试的DB处理程序 我正在使用Windows10 const mongoose = require('mongoose'); const { MongoMemoryServer }

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

下面是用于测试的DB处理程序

我正在使用Windows10

    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();
        }
    }
检查此问题:

今天我遇到了同样的问题。我解决了这个问题,将node_modules/.cashe/mongodb memory server/mongodb binaries/latest中的mongod.exe替换为旧版本。但我认为正确的方法是在package.json中声明旧版本:

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