运行mockgoose.prepareStorage

时间:2017-03-14 22:02:31

标签: javascript node.js mongoose mocha mockgoose

我有一个节点应用程序可以访问使用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重复使用吗?

由于

2 个答案:

答案 0 :(得分:2)

我很确定这是mockgoose 7的安装后步骤的一个问题,虽然我无法确定究竟是什么。恢复mockgoose ^ 6.0.0修复了这个问题。

<强>更新

问题是mockgoose第一次运行时必须下载mongodb源,这可能需要一段时间。您应该尝试将测试的超时更新为更长的时间(5-10分钟)。这确实解决了这个问题。幸运的是,这只需要一次。

答案 1 :(得分:1)

我在这个问题上搜索了几个小时,但我终于找到了一种肮脏的方法来解决它:

将一项测试复制粘贴几次。就我而言,每个测试都有 10 秒的超时,这不足以使百分比达到 100%。 因此,如果您运行足够多的测试(在我的例子中大约 6 个),您将达到 100%。

一旦达到 100%,您可以再次运行它,现在所有测试都可以快速运行,因此您可以再次删除重复的测试!