在使用Jest进行单元测试时启动mongodb-memory-server示例失败

wtzytmuj  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(141)

我有一个运行Express的微服务,并使用mongoose 6.x.x版本将数据保存到MongoDB。我正在尝试使用supertestjest对其进行测试。
我正在设置一些钩子,以便在8.x.x版本上创建Mongo Memory Server的示例,使用beforeAll钩子,如示例所示:

  1. import { MongoMemoryServer } from 'mongodb-memory-server';
  2. import mongoose from 'mongoose';
  3. let mongod: any;
  4. beforeAll(async () => {
  5. mongod = await MongoMemoryServer.create();
  6. const uri = mongod.getUri();
  7. await mongoose.connect(uri);
  8. });
  • mongod变量试图达到全局范围。*

此时我得到错误:
启动示例失败,请启用调试以获取详细信息。
因此,我不能在测试中使用这个示例。我已经启用了调试模式。我得到了关于mongo示例的以下错误:
【52463】:start:启动进程+8ms
【52463】:启动Mongod(_L):启动蒙哥进程+1毫秒蒙哥MS:蒙哥示例蒙哥[52463]:[52463]:您的位置:首页准备命令参数:最后一个参数数组:["--端口”,“52463”,"--数据库路径”,"/var/文件夹/wt/d 0 s3 lj 915 wd 5 pyvc 9 r7 zdfx 40000 gn/T/mongo-mem--10268-fsntc 7 R8 OJql”,"--存储引擎”,“暂时用于测试”,"--绑定_ip”,”127.0.0.1“,"--noauth”] +0ms MongoMS:MongoMemoryServer Mongo[未知]:stop()方法+23毫秒MongoMS:MongoMemoryServer Mongo[未知]:停止:未定义“instanceInfo”(从未运行?)+0ms
因为示例没有定义,所以产生了这个错误,我试图在afterAll钩子中调用mongod.stop来停止示例。
有人知道吗?

v64noz0r

v64noz0r1#

错误是由我的Mac架构的不兼容引起的。通常软件会加载,但它不会启动示例,因为正确的软件没有运行。
在ARM架构的Mac设备上,Rosetta 2的使用是必不可少的。从MongoDB Memory Server的7.x.x版本开始,该软件包会自动下载具有正确架构的软件。

相关问题