javascript - NodeJS 和 MongoDB 单元测试

标签 javascript node.js mongodb

下午所有

我一直在努力寻找以下问题的可靠解决方案。

我如何 单元测试 使用 MongoDB 的 NodeJS 代码?

我想编写独立的单元测试,而不是为了测试而实际启动任何数据库。

我想测试的示例代码:

数据库服务.js

var mongodb       = require('mongodb');

var exports = module.exports = (function () {

  var MongoClient   = mongodb.MongoClient;
  var db            = null;

  function getDB(){
    return db;
  }

  const connect = (
    options
  ) => {

    return new Promise((resolve, reject) => {

      var host      = options.host;
      var port      = options.port;
      var dbName    = options.dbName;

      var url = 'mongodb://' + host + ':' + port;

      // Use connect method to connect to the server
      MongoClient.connect(url, function(err, client) {

        if(error){
          return reject(false);
        }

        const db = client.db(dbName);

        return resolve(true);

      });

    });
  };

  return {
    connect: connect,
    getDB: getDB
  };

})();

用户服务.js
var DatabaseService   = require("./DatabaseService");

var exports = module.exports = (function () {

  const createUser = (
    options
  ) => {

    return new Promise((resolve, reject) => {

      var db = DatabaseService.getDB();

      var firstName = options.firstName;
      var lastName = options.lastName;

      db.collection('users').insertOne({
          firstName: firstName,
          lastName: lastName
        },
        function(error, result) {

          if (error){
            return reject(false);
          }

          return resolve(result);

      });

    });

  };

  return {
    createUser: createUser
  };

})();

最佳答案

您可以选择使用测试库来模拟它,例如之前评论过的 jest-mongodb。或者您需要将您的业务代码与 mongodb 样板隔离开来,并且不要对样板进行单元测试。

关于javascript - NodeJS 和 MongoDB 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49939223/

相关文章:

javascript - 如何通过mongoose在mongodb中设置复合主键

python - 将电子邮件存储到 mongodb 中

javascript - 如何改变JSON格式?

javascript 迭代和重新映射

javascript - Phantom.js - 如何使用 promise 而不是回调?

javascript - 基于类的 DOM 事件委托(delegate)

javascript - 为什么我的代码会抛出错误?

node.js - windows 10 socket.io安装错误

node.js - 如何使用node.js获取mongodb中createAt以来的时间?

javascript - Rally waspi 查询 - 使用 'in' 运算符进行过滤