У меня есть класс, который я пытаюсь проверить, и я новичок в Kotlin. Я продолжаю получать <403 FORBIDDEN Forbidden,[]> kotlin.KotlinNullPointerException
. Кажется, он читает мой основной файл application.properties и получает конфиги, а не издевается над вызовом httpRestUtil
. Я пробовал это по-разному, но, кажется, тот же результат. Любое направление на это будет оценено. Мой код выглядит примерно так:
class Client {
private val logger = LoggerFactory.getLogger(javaClass)
@Autowired
lateinit var httpRestUtil: HttpRestUtil
@Value("\${externalCalls.url}")
lateinit var Url: String
@Value("\${externalCalls.Key}")
lateinit var Key: String
@Retryable(value = [Exception::class], maxAttemptsExpression = "#{'\${maxRetry:3}'}", backoff = Backoff(delayExpression = "#{'\${delay:500}'}"))
fun getAttributes(arg1: String, arg2: Long): ResponseEntity<DataClass> {
val myUrl: UriComponentsBuilder = UriComponentsBuilder.fromUriString(Url.toString())
.queryParam("key", Key)
val result: ResponseEntity<DataClass> = httpRestUtil.exchange(myUrl, HttpMethod.GET, null, object : ParameterizedTypeReference<DataClass>() {})
if (result.statusCode.is5xxServerError) {
throw Exception("${result.statusCode}")
}
return result
}
Я пытаюсь проверить код, и мой тестовый пример выглядит следующим образом
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Profile("test")
@ActiveProfiles("test")
class ClientTest {
var httpRestUtil: HttpRestUtil = mockk()
@Autowired
lateinit var client: Client
private var Url: String = "http://localhost/"
private var Key: String = "123"
@Test
fun `test 200 response`() {
val dataClass: DataClass = TestData().getDataClass()
every {
httpRestUtil.exchange(
any<UriComponentsBuilder>(),
HttpMethod.GET,
anyString(),
object : ParameterizedTypeReference<DataClass>() {})
} returns ResponseEntity(dataClass,HttpStatus.OK)
val result = client.getAttributes("456789", 1234)
assert(result.body!!.arg1 == "456789")
}