Node.js Node express应用程序-结构化单元/集成测试

Node.js Node express应用程序-结构化单元/集成测试,node.js,express,tdd,mocha.js,Node.js,Express,Tdd,Mocha.js,我正在尝试为我的nodejs/express应用程序设置测试套件 我有一个类似于示例的结构,其中有一个应用程序文件夹,其中包括模型、视图和控制器文件夹 我的测试目录当前被拆分为 单位 整合 在单元内部,我模仿应用程序的文件夹结构。 我有关于我的模式的单元测试等等。。。将其保存到测试mongodb实例 我的问题是,我应该对我的控制器进行单元测试,还是应该将其保存以进行集成测试 我的“控制器”看起来像: controllers/account.js exports.login = functio

我正在尝试为我的nodejs/express应用程序设置测试套件

我有一个类似于示例的结构,其中有一个应用程序文件夹,其中包括模型、视图和控制器文件夹

我的测试目录当前被拆分为

  • 单位
  • 整合
在单元内部,我模仿应用程序的文件夹结构。 我有关于我的模式的单元测试等等。。。将其保存到测试mongodb实例

我的问题是,我应该对我的控制器进行单元测试,还是应该将其保存以进行集成测试

我的“控制器”看起来像:

controllers/account.js

exports.login = function(req, res) {
     res.render('account/login', {
          title: 'Log In'
     });
};

exports.login_post = function(req, res, next) {
     passport.authenticate('local', function(err, user, info) {
          if (err) {
               return next(err);
          }
          if (!user) {
               return res.redirect('/account/login');
          }
          req.logIn(user, function(err) {
               if (err) {                   
                    return next(err);
               }
               return res.redirect('/');
          });
     })(req, res, next);
};

最好是在整个堆栈中使用supertest,或者通过“单元”测试login\u post(例如)来测试此功能?

我将保留此功能用于集成测试。我还将使用诸如或之类的工具。我的经验告诉我,最好测试实际呈现的html,但遵循特定的用户交互流。这种方法当然存在问题。在我的例子中,我必须经常更改标记。这当然打破了所有的测试