java - 如何对依赖于其他 Util 类方法的 Util 类进行单元测试?

标签 java junit jwt junit4 claims

我有一个 util 类,它接受 String jwtToken 和 Key key 并使用 io.jsonwebtoken.jwts 解码 jwt。

但是,我无法对此进行测试。原因是,我无法模拟公钥并传递给该方法。因此,该方法在 Jwts.parser().serSigningKey(key) 处中断...

我尝试模拟公钥,但这也不起作用,因为我将模拟数据传递给真实函数并得到 UnSupportedJwtException。

我能想到的一种方法是将 String 转换为 Key 的 Util 移至 Util helper 中进行测试并使用它,并将转换后的 key 传递到方法中。然而,这确实有效,我认为这不是解决问题的正确方法。

       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;
   } ```

最佳答案

您可以将 Jwts.parser() 提取为类的单独字段,而不是直接在方法中调用此工厂方法。然后你就可以用mock替换这个对象

关于java - 如何对依赖于其他 Util 类方法的 Util 类进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401975/

相关文章:

java - 为私有(private)方法的 NullPointerException 编写 junit 测试用例时出现问题

java - JHipster - 网关如何在微服务中进行身份验证?

json - 如何检查 JWT 的角色声明(值数组)的某个值?

wordpress - 使用 WP JWT Auth 登录 Facebook

java - 使用简单的 xml 持久化对象时如何格式化日期或 double 值

java - 如何将网格分成两部分

java - map 中的 map 条目列表

java - 系统中发现 Selenium 元素,但 Jenkins 中未发现

android - 如何避免 Android 测试应用程序中的代码重复?

java - WebTestClient 根据另一个 jsonPath 检查 jsonPath