Как мне написать модульные тесты для работы с декодированием Base64?
У меня есть следующий тест
@RunWith(PowerMockRunner::class)
@PrepareForTest(Log::class)
class JwtDeserializerTest {
@Before
fun setup() {
PowerMockito.mockStatic(Log::class.java) // this helped with Runtime exception for having Log in my code
PowerMockito.mockStatic(Base64::class.java)
}
@Test
fun testJwtToken() {
val jwt = Jwt(jwt_token)
val expirationDateTimeFromJwtClaims = jwt.getClaim("exp")?.asLong() ?: 0L
assertTrue(expirationDateTimeFromJwtClaims != 0L)
}
}
Конфликт возникает, когда следующий код запускается внутри для создания экземпляра объекта Jwt .
fun decodeFromBase64(value: String): String {
try {
val data = Base64.decode(value, Base64.DEFAULT)
if (data != null) {
return String(data, charset("UTF-8"))
}
} catch (e: UnsupportedEncodingException) {
Log.e(TAG, e.message, e)
}
return ""
}
Во время создания экземпляра я декодирую токен JWT и настраиваю некоторые вспомогательные методы при рассмотрении заявок. Это включает в себя проверку количества частей токена, например, заголовка, полезной нагрузки, подписи и т. Д.
Во время отладки декодирование вызывает проблему. У меня была похожая проблема с функцией Log, но добавление PowerMockito.mockStatic(Log::class.java)
разрешило этот конфликт.
Как я могу решить эту проблему для Base64? Декодирование всегда возвращает ноль. Однако при тестировании вне теста junit я получаю правильные значения.