我有一个处理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 。
在我的单元测试中,我只想测试该类是否按预期工作并生成JWT令牌,我面临的问题是,即使我在其中有另一个属性文件,在运行测试时这两个属性也不会注入测试/资源文件夹。
我发现有使用 ReflectionTestUtils.setField 的解决方案,但这更像是一种解决方法。
我的单元测试如下:
@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();
}