node.js - Mocha 单元测试 Mongoose 模型

标签 node.js unit-testing mongoose mocha.js chai

我正在尝试使用 Mocha 和 Chai 对我的 Mongoose 模型进行简单测试

// Mock user
  var testUser = new User({
    companyID: "1",
    username: "mockUser",
    password: "password",
    email: "a@valid.email",
  });

// Create new user
it('Should add a new user with a hashed password to DB' , (done) => {
  User.addUser(testUser, (err, user) => {
    if(err) console.log(err);
    else {
      assert.typeOf(user, 'Object');
      assert.equal(user.username, "mockUser");
      expect(user.password).to.not.equal("password");
    }
    done();
  });
});

错误:超时超过 2000 毫秒。对于异步测试和 Hook ,确保调用“done()”;如果返回 Promise,请确保它能够解决

我认为 Mocha 已经改变,因为它一直在与以前的项目一起工作。 我在这里缺少什么?

模型方法:

module.exports.addUser = function(newUser, callback) {
  bcrypt.genSalt(10, (err, salt) => {
    bcrypt.hash(newUser.password, salt, (err, hash) => {
      if (err) throw err;
      newUser.password = hash;
      newUser.save(callback);
    });
  });
}

最佳答案

有时,当单元测试意味着在数据库中创建对象时,它需要的时间超过默认超时的 2 秒。尝试启动 Mocha 增加超时并查看它是否有效。

mocha --timeout 10000

关于node.js - Mocha 单元测试 Mongoose 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53593508/

相关文章:

javascript - node.js - 需要错误导致内存泄漏?

unit-testing - 像 isInUnitTest() 这样的检查是反模式吗?

javascript - TypeScript ts-jest 预处理器的目的是什么?

php - 模拟 Laravel Controller 依赖

node.js - Mocha 在与 Mongoose 连接时执行后挂起

node.js - 如何从脚本中退出 nodeJS 脚本?

node.js - Angular2 和 NodeJs

javascript - 尴尬的逃脱角色

node.js - 如何在 mongodb 中推送一个新文档,但前提是它不存在?

rest - 如何访问restify 1.x.x 中发布的数据?