您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Express中模拟中间件以跳过身份验证以进行单元测试?

如何在Express中模拟中间件以跳过身份验证以进行单元测试?

您可以使用sinonto stubisAuthenticated方法,但是应该auth.isAuthenticated在将对的引用设置为中间件之前进行此操作,因此在创建index.jsand 之前需要这样做app。您最有可能希望将其beforeEach挂钩:

var app;
var auth;

beforeEach(function() {
  auth = require('../wherever/auth/auth.service');
  sinon.stub(auth, 'isAuthenticated')
      .callsFake(function(req, res, next) {
          return next();
      });

  // after you can create app:
  app = require('../../wherever/index');
});

afterEach(function() {
  // restore original method
  auth.isAuthenticated.restore();
});

it('it should return a 200 response', function(done) {
  request(app).post('/subscriptions/sync')
  .set('Authorization','Bearer '+ authToken)
  .send({receipt: newSubscriptionReceipt })
  .expect(200,done);
});

请注意,即使在auth.isAuthenticated还原后,现有app实例也将具有存根作为中间件,因此,app如果由于某种原因需要获得原始行为,则需要创建另一个实例。

其他 2022/1/1 18:13:32 有944人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶