我有一个util类,它使用String jwtToken和Key密钥,并使用io.jsonwebtoken.jwts解码jwt。
但是,我无法对此进行测试。原因是,我无法模拟公钥并传递给方法。因此,该方法在Jwts.parser()。serSigningKey(key)...处中断。
我尝试模拟公钥,但由于将模拟数据传递给实函数并获得UnSupportedJwtException,所以该方法也不起作用。
我能想到的一种方法是将将String转换为Key的Util移到Util助手中进行测试,并使用它并将转换后的键传递给方法。但是,这行得通,我认为这不是解决问题的正确方法。
Claims claims = null;
try {
claims = Jwts.parser().setSigningKey(key).parseClaimsJws(jwtToken).getBody();
} catch (UnsupportedJwtException | MalformedJwtException | ExpiredJwtException
| IllegalArgumentException ex) {
LOGGER.error("Error in JWT/JWS validation", ex);
}
LOGGER.debug("Return Claims: ", claims);
return claims;
} ```
答案 0 :(得分:0)
您可以将Jwts.parser()提取为类的单独字段,而不是直接在您的方法中调用此工厂方法。然后您将可以用模拟代替该对象