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

测试JWT sub值提取方法:如何给Mock Token设置sub值?

解决JwtAuthenticationToken Mock测试中设置sub值的问题

你的测试代码核心问题是没有正确构造getTokenAttributes()返回的Map,导致sub值无法被待测试方法提取。直接构造一个包含目标sub键值对的Map即可解决:

修改后的测试代码

@Test
void testEndpoint() {
    // 构造包含指定sub值的属性Map
    Map<String, Object> tokenAttributes = new HashMap<>();
    tokenAttributes.put("sub", "subValue");

    // Mock JwtAuthenticationToken对象,指定getTokenAttributes的返回值
    JwtAuthenticationToken principal = Mockito.mock(JwtAuthenticationToken.class);
    Mockito.when(principal.getTokenAttributes()).thenReturn(tokenAttributes);

    // 调用待测试方法并断言结果
    String sub = subExtractionService.getSub(principal);
    Assertions.assertEquals("subValue", sub);
}

额外优化建议

你的待测试方法实现过于冗余,完全可以简化,避免不必要的字符串替换操作:

public String getSub(JwtAuthenticationToken principal) {
    return (String) principal.getTokenAttributes().get("sub");
}

简化后逻辑更清晰,也能减少测试中潜在的字符串处理问题。

内容的提问来源于stack exchange,提问作者RandolfDerGraue

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:38:22