You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中使用Sinon Stub jsonwebtoken的verify函数报错问题

问题原因与解决方案

错误原因

jsonwebtoken的verify函数包含多个重载签名,其中带回调参数的异步版本返回值为void。Sinon在自动推断类型时优先匹配了这个异步重载,导致stub.returns()被约束为只能接受void类型参数,而你传入的"valid"是string类型,因此触发类型不匹配错误。

解决方案

通过明确指定Sinon Stub的泛型参数,强制匹配verify的同步版本签名(返回string | jwt.JwtPayload),即可解决类型错误:

import sinon from 'sinon';
import jwt from 'jsonwebtoken';

// 泛型参数依次为:[参数列表类型], 返回值类型
const stub = sinon.stub<
  [string, string | jwt.Secret, jwt.VerifyOptions?], 
  string | jwt.JwtPayload
>(jwt, "verify");
stub.returns("valid"); // 类型匹配,不再报错

如果你的业务代码实际使用的是verify的异步回调版本,可以改用stub.callsFake()模拟回调逻辑:

const stub = sinon.stub(jwt, "verify");
stub.callsFake((token, secret, options, callback) => {
  callback(null, "valid");
});

内容的提问来源于stack exchange,提问作者Juan Pablo Alvarez Ovalle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:45:43