1
我目前正在學習測試一個jwt認證中間件。我的下一個回調被稱爲,因爲我在那裏放了一個console.log
但我的sinon間諜斷言失敗。Sinon間諜不被稱爲快遞中間件
有人可以看看這種情況嗎?
這是我的測試案例
it("should call next when the token provided is valid",() => {
let token = jwt.sign({}, process.env.JWT);
let request = httpMocks.createRequest({
headers: {
Authorization: `Bearer ${token}`
}
});
const next = sinon.spy();
authenticateJwt(request, response, next);
expect(next.calledOnce).to.be.true;
});
這裏是我的中間件
import jwt from "jsonwebtoken";
export default function(req, res, next){
const authorizationHeaders = req.headers["authorization"];
let token;
if(authorizationHeaders){
token = authorizationHeaders.split(" ")[1];
}
if(token){
jwt.verify(token, process.env.JWT, (err, decodedToken) => {
if(err){
res.status(401).json({
message: "invalid token provided"
});
} else {
res.user = decodedToken;
console.log("called");
next();
}
});
} else {
res.status(401).json({
success: false,
message: "no token provided"
});
}
}
我console.log
正確地記錄,但興農斷言失敗。
我可以在這裏做什麼類型的斷言?一般來說,我還是新手。我想要測試的是回調函數被調用。 – Nate
我已編輯答案,以示例斷言提供替代方案 – Varedis
非常感謝!這工作。 – Nate