Node.js - 单元测试中间件

时间:2015-06-29 15:25:40

标签: node.js unit-testing mocha sinon

我有一个带有中间件功能的api,我用它来过滤传入的请求。这些函数检查标头中标记的存在,然后对数据库进行两次调用,一次检查令牌,另一次获取一些信息并将其传递给请求对象,如果第一次电话是成功的。

我正在努力通过模拟请求对象以及数据库调用来理解如何对这些函数进行单元测试。

middleware.js

exports.checkToken = function (req, res, next) {
  if (!req.get('token')) {
      return res.status(400).json('Bad request');
  }

  var token = req.get('token'); //get token from the header 

  User.findOne({'token': token}, function(err, user) {
      // skipped error checking or no user found
      Account.findOne({'_id': user.account}, function(err, account) {
          // skipped error checking or no account found
          req.somevalue = account;
          return next();
      });
  });
};

目前我正在使用 mocha chai sinon ,并考虑以下事项:

  • 使用sinon.stub()

  • 模拟User.findOne和Account.findOne
  • 不确定如何处理req,res和next对象。如何模仿这些?

1 个答案:

答案 0 :(得分:1)

我认为最好的选择是使用超级。

https://www.npmjs.com/package/supertest

此程序包允许运行模拟应用程序上完整请求的测试。