簡體   English   中英

如何使用 Mockito 或 MockK 模擬 android.util.Patterns

[英]How to mock android.util.Patterns with Mockito or MockK

我有一個方法需要測試:

fun validate(email: String): Result {
    return if (android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
        Result(true)
    } else {
        Result(false, "error")
    }
}

但它返回一個NullPointerException錯誤,因為Patterns.email需要被模擬。 現在我手動創建和測試模式,但無法測試上述方法。

object Patterns {
    private const val EMAIL_PATTERN = ("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + 
        "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")

    val EMAIL_ADDRESS: Pattern = Pattern.compile(EMAIL_PATTERN)
}

任何想法如何使用MockitoMockK執行此操作,以便我可以整體測試此方法,而不是在測試中手動創建模式。

我相信你可以使用objectMockk ,從Mockk:

objectMockk(Patterns.EMAIL_ADDRESS).use {
    every { Patterns.EMAIL_ADDRESS.matcher(email).matches() } returns true
    //Code that uses the mock here
}

您將模擬常量字段Patterns.EMAIL_ADDRESS ,然后模擬您希望它在方法matcher(email).matches()

我相信這對於您的用例來說已經足夠了,但我不確定這個庫在 Android 中是如何處理的。

暫無
暫無

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

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