簡體   English   中英

“lateinit 屬性<varname>在 Kotlin 上使用帶有 SpringBootTest 的 WebTestClient 時尚未初始化”</varname>

[英]“lateinit property <varName> has not been initialized” when using WebTestClient with SpringBootTest on Kotlin

在使用 Kotlin 和 Spring 引導測試時,我無法弄清楚如何初始化WebTestClient

@ExtendWith(SpringExtension::class, MockKExtension::class)
@AutoConfigureWebTestClient
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class GraphQlClientIntegrationTest {
    private val testToken = "aUna%14OkmUZunb528342"

    @Autowired
    lateinit var client: WebTestClient

    @InjectMockKs
    lateinit var gateGraphQlClient: GateGraphQlClient

    @Test
    fun shouldAddAuthorization() {
        val ID = Id(UUID.randomUUID().toString())
        val returnResult = client.post()
                .uri("/graphql")
                .header(HttpHeaders.AUTHORIZATION, testToken)
                .exchange()
                .expectStatus().isOk
                .returnResult(ObjectNode::class.java)
    }
}

這是錯誤信息

lateinit property client has not been initialized
kotlin.UninitializedPropertyAccessException: lateinit property client has not been initialized

嘗試構造函數注入。 因為lateinit會懶惰地初始化object。 因此,當您調用方法時它會給出null值,因此它會拋出UninitializedPropertyAccessException

class GraphQlClientIntegrationTest(val client: WebTestClient,
                                   val gateGraphQlClient: GateGraphQlClient) {
    private val testToken = "aUna%14OkmUZunb528342"
    // Your Code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM