1
私は現在、jwt認証エクスプレスミドルウェアをテストすることを学んでいます。私はconsole.log
を入れたので私の次のコールバックが呼び出されていますが、私のサイオンスパイアサーションは失敗しています。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
は正常にログインしているが、sinonアサーションが失敗しています。
ここでどのようなアサーションを行うことができますか?私はまだ一般的にテストするのが初めてです。私がテストしたいのは、コールバック関数が呼び出されただけです。 – Nate
私は例のアサーションで代替案を提供するために答えを編集しています – Varedis
ありがとうございました!これは機能します。 – Nate