【问题标题】:how to create mongoose connection when testing with gulp mocha使用 gulp mocha 进行测试时如何创建猫鼬连接
【发布时间】:2015-07-08 00:25:39
【问题描述】:

我想做一个 gulp 任务,用一个命令运行我所有的 mocha 测试。 (我的测试需要用猫鼬连接到数据库)

然后我得到了这个错误: { [Error: Trying to open unclosed connection.] state: 1 }

经过一番研究,我发现了这个帖子: Mongoose Trying to open unclosed connection

它说我应该使用 createConnection() 而不是 'connect()`。

这是现在的问题:

我如何使用beforeafter 进行测试,以及如何在连接db 之后调用done,然后再通过每个测试用例?

【问题讨论】:

  • 您是否多次运行mongoose.connect() 命令,甚至跨多个测试脚本?您应该只需要执行一次connect 命令。
  • 是的,我在每个测试规范中运行它们。我这样做的原因是我想让我也可以单独运行每个测试规范,同时我可以一次运行它们。如果我每次运行只能运行一次mongoose.connect() ,我想我需要编写一些 gulp 脚本来实现这一点。

标签: mongoose gulp mocha.js


【解决方案1】:

以下是我的 gulp 任务:

gulp.task('mocha', function () {
  var testFile = argv['f'];
  var fullPaths;
  if (testFile) {
    fullPaths = paths.server + 'tests/' + testFile;
  } else {
    fullPaths = serverUnitTestFiles;
  }
  var dbConnectionModulePath = paths.server + 'tests/db-connection.js';
  var dbConnection = gulp.src(dbConnectionModulePath, { read: false });
  var tests = gulp.src(fullPaths, { read: false });
  return series(dbConnection, tests)
      .pipe(mocha({ reporter: 'nyan' }));
});

这里是 db-connection.js 模块:

'use strict';

var mongoose = require('mongoose'),
    connection = mongoose.connection,
    dbName = 'learnMongo';

before(function (done) {
  connection.on('error', console.error);
  connection.once('open', function () {
    done();
  });
  mongoose.connect('mongodb://localhost:27017/' + dbName);
});

after(function (done) {
  connection.close(done);
});

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 2014-10-12
    • 2018-12-30
    • 2020-11-08
    • 1970-01-01
    • 2019-05-31
    • 2019-05-04
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多