【问题标题】:Mocha unit testing a mongoose modelMocha 单元测试猫鼬模型
【发布时间】:2019-05-04 17:34:59
【问题描述】:

我正在尝试使用 mocha 和 chai 对我的猫鼬模型进行简单测试

// 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 毫秒的超时。对于异步测试和钩子,确保调用了“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);
    });
  });
}

【问题讨论】:

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


    【解决方案1】:

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

    mocha --timeout 10000
    

    【讨论】:

    • 我不认为是这种情况,但我记得在单元测试中使用箭头函数时遇到了问题。以防万一,尝试使用 function(done) { ....
    【解决方案2】:

    忘记要求应用程序本身。

    const app = require('../app');
    

    【讨论】:

      猜你喜欢
      • 2018-12-30
      • 2017-04-26
      • 2014-10-12
      • 2017-08-11
      • 2016-11-19
      • 2013-01-16
      • 2016-05-19
      • 2017-10-11
      • 2019-08-04
      相关资源
      最近更新 更多