【问题标题】:NodeJS & MongoDB Unit TestingNodeJS 和 MongoDB 单元测试
【发布时间】:2018-10-01 00:40:45
【问题描述】:

下午

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

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

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

我要测试的示例代码:

DatabaseService.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
  };

})();

UserService.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
  };

})();

【问题讨论】:

标签: javascript node.js mongodb


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2021-03-08
    相关资源
    最近更新 更多