У меня есть класс, который обрабатывает создание 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();
}
}
И это займет jwtSecret и jwtExpirationInMs из файла свойств, который находится в папке resources .
В моем модульном тесте я просто хочу проверить, что этот класс работает должным образом и генерирует токен JWT, проблема, с которой я сталкиваюсь, заключается в том, что эти два свойства не вводятся при запуске теста, даже если у меня есть другой файл свойств в test / resources папка.
Я обнаружил, что есть решение, использующее 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();
}