Kotlin -Мокк, вызывающий resttemplate.exchange - PullRequest
0 голосов
/ 30 января 2020

У меня есть класс, который я пытаюсь проверить, и я новичок в 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")
    }
...