我有一个节点应用程序可以访问使用mocha和mockgoose测试的mongodb抛出的mongoose.
我最近搬到了模拟7.0.5.
我跟着github的开始,把我的摩卡超时提升到了2分钟.
以下是我在测试中的函数:
import mongoose from 'mongoose';
var Mockgoose = require('mockgoose').Mockgoose;
[...]
const mockgoose = new Mockgoose(mongoose);
before(function(done) {
try {
console.log('BEFORE prepareStorage');
mockgoose.prepareStorage().then(() => {
console.log('IN prepareStorage');
mongoose.connect('mongodb://example.com/TestingDB', function(err) {
done(err);
});
}).catch((error) => {
done(error);
});
} catch(e) {
done(e);
}
console.log('AFTER prepareStorage');
});
beforeEach(function(done) {
mockgoose.helper.reset();
done();
});
当我运行测试时,在mockgoose.prepareStorage步骤中,mockgoose似乎正在下载一些东西.
BEFORE prepareStorage
AFTER prepareStorage
Completed: 0.1 % (0.2mb / 234.3mb
我想这与请求的2分钟超时有关.
我的问题是:
>有人知道mockgoose正在下载什么吗? (我不记得以前版本的mockgoose的这种行为)
> mockgoose是否需要在每次运行时进行下载(npm测试),或者结果是否会在下次运行中重复使用(npm测试)?
>我可以阻止他下载的东西.理想情况下,我想在沙箱环境中运行我的单元测试,无法访问Web(在docker中).我可以在某处下载234mb并请求mockgoose重复使用吗?
谢谢
解决方法:
我很确定这是mockgoose 7的安装后步骤的一个问题,虽然我无法确定究竟是什么.恢复mockgoose ^ 6.0.0修复了这个问题.
更新
问题是mockgoose第一次运行时必须下载mongodb源,这可能需要一段时间.您应该尝试将测试的超时更新为更长的时间(5-10分钟).这确实解决了这个问题.幸运的是,这只需要一次.