5

我有一个节点应用程序可以访问 mongodb 抛出的 mongoose,并使用 mocha 和 mockgoose 进行了测试。我最近搬到了 mockgoose 7.0.5。我按照 github 上的入门指南将 mocha 超时时间提高到 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 test)时是否需要此下载,或者结果会在下一次运行(npm test)中重复使用?

  • 我可以阻止他下载东西吗?理想情况下,我想在沙盒环境中运行我的单元测试,而不能访问网络(在 docker 中)。我可以在某处下载 234mb 并要求 mockgoose 重用它吗?

谢谢

4

2 回答 2

2

我很确定这是 mockgoose 7 的安装后步骤的问题,尽管我无法确定具体是什么。恢复为 mockgoose ^6.0.0 可解决此问题。

更新

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

于 2017-03-16T19:09:58.637 回答
1

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

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

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

于 2021-02-17T09:29:25.717 回答