我有一个运行Express的微服务,并使用mongoose 6.x.x版本将数据保存到MongoDB。我正在尝试使用supertest和jest对其进行测试。
我正在设置一些钩子,以便在8.x.x版本上创建Mongo Memory Server的示例,使用beforeAll钩子,如示例所示:
import { MongoMemoryServer } from 'mongodb-memory-server';
import mongoose from 'mongoose';
let mongod: any;
beforeAll(async () => {
mongod = await MongoMemoryServer.create();
const uri = mongod.getUri();
await mongoose.connect(uri);
});
- 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来停止示例。
有人知道吗?
1条答案
按热度按时间v64noz0r1#
错误是由我的Mac架构的不兼容引起的。通常软件会加载,但它不会启动示例,因为正确的软件没有运行。
在ARM架构的Mac设备上,Rosetta 2的使用是必不可少的。从MongoDB Memory Server的7.x.x版本开始,该软件包会自动下载具有正确架构的软件。