node.js - 将变量传递给 Mocha 测试套件

标签 node.js mongoose mocha.js

在使用 mocha 运行所有测试之前,我正在使用 mongoose 创建连接(并清理数据库)(_setup.js):

var mongoose = require('mongoose'),
nconf = require('nconf');

nconf.env().argv(); 

var _conn;

before(function(done){
    _conn = mongoose.createConnection(nconf.get('TEST_DB'), function(error){
      if(error) return done(error);

      _conn.db.dropDatabase(done);
   });
});

after(function(done){
   _conn.db.dropDatabase(function(error){
       if(error) return done(error);

       _conn.close(done);
   });
});

其他测试套件需要此连接来构建 Mongoose 模型。我使用单独的连接而不是默认的 mongoose 连接,因为这些测试可以通过 mocha js api 在应用程序中运行。该应用程序使用默认的 Mongoose 连接。需要连接变量的示例测试:

var should = require('should'),
service = require('../lib/service')(_conn); // << somehow need that conn variable created in before tests

describe('Service', function(){

   describe('#dodboperation()', function(){

       //tests and stuff

无论如何,在 mocha 的文件/测试套件之间传递变量?有什么建议吗?

最佳答案

使用环境变量。在你的 mocha 文件的顶部,包括:

process.env.TEST = 'true'; // Use test database

然后,包括使用像这样的数据库配置:

var url = require('url');
var config = {};
var dbUrl;

if (typeof(process.env.DATABASE_URL) !== 'undefined') {
    dbUrl = url.parse(process.env.DATABASE_URL);
}
else if (process.env.TEST === 'true') {
    dbUrl = url.parse('tcp://postgres:postgres@127.0.0.1:5432/test');
}
else {
    dbUrl = url.parse('tcp://postgres:postgres@127.0.0.1:5432/db');
}

config.dialect = 'postgres';
config.protocol = dbUrl.protocol.substr(0, dbUrl.protocol.length - 1); // Remove trailing ':'
config.username = dbUrl.auth.split(':')[0];
config.password = dbUrl.auth.split(':')[1];
config.host = dbUrl.hostname;
config.port = dbUrl.port;
config.database = dbUrl.path.substring(1);

console.log('Using database ' + config.database);
module.exports = config;

我们还在开发机器的不同端口上运行两个不同的服务器。我们在端口 4000 上运行 nodemon 以进行常规开发,然后如果 TEST == 'true' 服务器在端口 4500 上运行。

关于node.js - 将变量传递给 Mocha 测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17867447/

相关文章:

angularjs - 如何使用 Mongoose、Mean、Express 和 Angular 显示大量数据

node.js - [错误 : failed to connect to [localhost:27017]] . 此错误发生在 mongodb 上

django - 在 Django 中将 JSON 数据从响应传递到请求

node.js - 使用 Express JS Router 根据用户角色进行路由

node.js - 安装cordova时出错

javascript - Mocha , Chai : Assert that Object is included in an Array of Objects

javascript - Mocha - Chai Unit Terst 报告生成 - NodeJS

javascript - Node JS Fork TCP 客户端

node.js - Mongoose 在特定记录后查找 n 条记录

javascript - 在测试使用 Promise 的 Node 模块时如何断言?