[英]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)
}
任何想法如何使用Mockito或MockK执行此操作,以便我可以整体测试此方法,而不是在测试中手动创建模式。
我相信你可以使用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.