当前位置: 首页 > 知识库问答 >
问题:

SpringBoot单元测试在用@InjectMocks注释的对象上注入属性

松思源
2023-03-14

我有一个处理jwt创建的类:

public class JwtTokenHandler {
    @Value("${jwtSecret}")
    private String jwtSecret;

    @Value("${jwtExpirationInMs}")
    private int jwtExpirationInMs;

    public String generateToken(String subject) {
        Date now = new Date();
        Date expiryDate = new Date(now.getTime() + jwtExpirationInMs);

        return Jwts.builder()
                .setSubject(subject)
                .setIssuedAt(new Date())
                .setExpiration(expiryDate)
                .signWith(SignatureAlgorithm.HS512, jwtSecret)
                .compact();
    }
}

并从resources文件夹中的属性文件中获取jwtSecret和jwtExpirationInMs。

我的单元测试如下所示:

@RunWith(SpringRunner.class)
public class JwtTokenProviderTest {

    @InjectMocks
    private JwtTokenProvider jwtTokenProvider;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testGenerateToken() {
        String result = jwtTokenProvider.generateToken("Test");
        assertThat(result).isNotBlank();
    }

共有1个答案

益光亮
2023-03-14

我建议查看Spring Boot的@mockedBean注释,而不是@injectmocks。有了它,装豆子就容易多了。

 类似资料:
  • 知道为什么@Context注入在单元测试时不起作用吗?

  • 我的“BBService”对象在这里为空 我是不是漏掉了什么?

  • 我想配置一个Spring Boot应用程序,以便根本不使用DB。因此,我对应用程序类进行了注释,以排除JPA自动配置类: 原因:org.springframework.beans.factory.BeanCreationException:创建名为“data source”的bean时出错:调用init方法失败;嵌套异常是java.lang.IllegalStateException:无法为测试确

  • 我有一个@Service,我试图在单元测试中嘲笑它,但到目前为止我得到了一个空值。在应用程序类中,我指定什么是scanBasePackages。我必须用不同的方式来做这件事吗?谢谢。 这是我的服务类,它实现了一个接口: 这是我的单元测试。

  • 我在我的SpringBoot应用程序“demo”中使用了注释样式的Resilience4j。当通过RestTemplate调用外部后端时,我希望使用TimeLimiter并重试以实现以下目标: 将REST调用持续时间限制在5秒-->如果需要更长时间,则使用TimeoutException失败 在TimeoutException上重试-->最多尝试2次 为了查看弹性设置的配置是否如设计的那样工作,我

  • 当使用mockito单元测试Spring mvc控制器时,如何注入道层对象。当使用SpringJUnit4ClassRunner类时,它总是使用@Spy注释给空指针异常。 示例代码: 在这个测试用例中,依次调用,它总是返回