快速路线的Sinon存根不被调用

时间:2017-01-11 13:09:59

标签: node.js express sinon sinon-chai

我目前正在使用快速网络应用程序修补sinon / mocha / chai。 我试图验证身份验证是否正常工作,我让身份验证中间件正常运行并阻止请求,并在另一次运行中我存储中间件函数,只是让请求与其他信息通过。

基本上我的设置如下:

使用要存根的函数

helper.js

var helper = {};

helper.verifyAuthCookie = function(req, res, next) {
  if (req.signedCookies.auth) {
    jwt.verify(req.signedCookies.auth, "secret", {
      subject: "a",
      issuer: "b",
      audience: "c"
    }, function(err, decoded) {
      if (decoded) {
        req.user = {
          authenticated: true
        };
      } else {
        req.user = {
          authenticated: false
        };
      }
      next();
    });
  } else {
    req.user = {
      authenticated: false
    };
    next();
  }
};

module.exports = helper;

test.js

var helper=require("helper.js");
describe("get unauthenticated", function() {
  it("should fail", function(done) {
    chai.request(server.app)
      .get("/queries")
      .end(function(err, res) {
        expect(err)
          .to.not.be.null;
        expect(res.status)
          .to.be.equal(401);
        done();
      });
  });
});
describe("get unauthenticated", function() {
  var verifyCookieStub;
  beforeEach(function() {
    verifyCookieStub = sandbox.stub(helper, "verifyAuthCookie", function(req, res, next) {
      req.user = {
        authenticated: true
      }
      next();
    });
  });
  afterEach(function() {
    sinon.assert.calledOnce(verifyCookieStub);
    verifyCookieStub.restore();
  });
  it("should not fail", function(done) {
    chai.request(server.app)
      .get("/queries")
      .end(function(err, res) {
        expect(err)
          .to.be.null;
        expect(res.status)
          .to.be.equal(200);
        done();
      });
  });
});

并在快递网络应用服务器server.js

const express = require("express");
const helper = require("./helper.js");
app = express();
app.use(helper.verifyAuthCookie);

app.get("/queries", function(req, res) {
  res.send(req.user.authenticated);
});

现在的问题是,第一次测试成功,但第二次和afterEach断言都失败,这表明存根没有正常工作。

在互联网上搜索时,我发现有人正在做一些非常相似的事情,而且他似乎工作正常。他的Github Repo

我完全错过了什么吗?

0 个答案:

没有答案