簡體   English   中英

如何使用 MockK 模擬局部變量

[英]How to mock local variables using MockK

我有以下簡化代碼

class Foo() {
    suspend fun bar() {
        val headers = AtomicReference(Metadata())
        val metadata = headers.get()
        if (metadata.keys().size > 0) { // I want it to return a value specified in the test file
            // ...
    }
}

如何模擬AtomicReferenceMetadata以便例如headers.get().keys().size返回指定值而不是真實值?

您可以使用 Constructor Mocks 來模擬Metadata的構造函數:

mockkConstructor(Metadata::class)

every { anyConstructed<Metadata>().keys() } returns mockedKeys

請注意,鍵的 mockedKeys 是您的測試數據。

https://mockk.io/#constructor-mocks

此外,嘗試以不需要模擬任何構造函數的方式構建代碼(例如使用控制反轉),您會發現它在測試時會帶來好處。

暫無
暫無

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

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