我有一个Lerna,其中一个包中的一些集成测试使用mongodb-memory-server。
问题是,当我从根运行所有测试时,mongodb-memory-server开始下载MongoDB并使用它进行测试,当然是超时。然后,在完全下载MongoDB之前,整个测试过程通过超时结束,所以下次它将再次开始下载。
以下几点:
mongodb-memory-server在dep安装时下载的。也就是说,在我的例子中,当我运行lerna bootstrap时。我不使用mongodb-memory-server-core,而是直接使用mongodb-memory-server。考虑到我在根node_modules中看到了node_modules缓存,这个缓存应该会像预期的那样工作。node_modules而不是根中搜索那个缓存。为什么会这样呢?根据这句话,我理解它应该在根node_modules中搜索它。这里我的全局测试设置,简化了
const mongod = new MongoMemoryServer()
beforeAll(async done => {
const uri = await mongod.getUri()
await mongoose.connect(uri, {
// ... some opts
})
done()
})
afterAll(async done => {
await mongoose.connection.dropDatabase()
await mongoose.connection.close()
await mongod.stop()
done()
})这是我的lerna配置,简化了
{
"packages": ["packages/*"],
"command": {
"bootstrap": {
"hoist": true,
"strict": true
}
},
"version": "independent"
}我理解得对吗?或者说,这里的整个流程应该是什么?
如果你需要更多的信息,就告诉我。
编辑:最好表达我的怀疑和重新措辞的问题。
发布于 2022-07-06 07:56:18
我确认流程就是所描述的。这里缺少的部分是mongodb-memory-server env变量在jest.config.js文件中的用法。
process.env = Object.assign(process.env, {
MONGOMS_SYSTEM_BINARY: path.join(
'..',
'..',
'node_modules',
'.cache',
'mongodb-memory-server',
'mongodb-binaries',
'*', // MongoDB version is expanded
'mongod.exe',
),
})https://stackoverflow.com/questions/72870969
复制相似问题