NodeJS与MongoDB单元测试

8

大家下午好

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

如何对使用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
  };

})();

你可以使用 jest-mongodb - Haniel Baez
1个回答

0

你可以选择使用测试库(如前面所述的jest-mongodb)来模拟它。或者你需要将业务代码与mongodb样板分离,并且不对样板进行单元测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接