护照与Sinon和Mocha一起被证实

时间:2018-06-11 14:20:27

标签: node.js express mocha passport.js sinon

我通常会在平台上找到我想要的所有东西,但这些天我都在干涸。

这是我的问题: 我正在尝试将护照身份验证(更具体地说是经过身份验证)存根,以便在测试时绕过我的OAuth。 此方法用作我的一个路由中的中间件。 这是一些片段

AuthUtils模块

    module.exports.ensureAuthenticated = (req, res, next) => {
    if (req.isAuthenticated()) {
        console.log('Auth Success', req.session.passport.user);
        return next();
      }
      console.log('Auth Fail');
      return res.redirect('/');
   };

路线示例:

router.get('/', authUtils.ensureAuthenticated, async (req, res, next) => {
 //do stuff
});

单元测试:

const app = require('../../app.js');
const authUtils = require('../../scripts/auth_utils.js');
const service = require('../../services/scenes.js');
const data = require('../fixtures/data.json');


describe.only('Scenes Unit tests', function() {
  beforeEach(function() {
    this.sandbox = sinon.createSandbox(); 
  })

  afterEach(function() {
    this.sandbox.restore();
  })

  it('should get all the scenes', function(done){
    this.sandbox.stub(authUtils, 'ensureAuthenticated').returns(true);
    this.sandbox.stub(service, 'getScenes').resolves(data.list.success);

    chai.request(app)
    .get('/api/')
    .then((res) => {
      authUtils.ensureAuthenticated.should.have.been.calledOnce;
      done();
    })
    .catch((err) => {
      done(err);
    });
  });
})

我尝试使用存根,删除模块的缓存,代理查询,基本上所有已发布的SO解决方案但没有任何效果。存根没有被调用,永远不会被调用

有人设法解决了这个问题吗?

非常感谢你的时间!

0 个答案:

没有答案