首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Mockito或MockK模拟MockK

如何用Mockito或MockK模拟MockK
EN

Stack Overflow用户
提问于 2018-04-18 14:39:16
回答 1查看 832关注 0票数 2

我有一个需要测试的方法:

代码语言:javascript
复制
fun validate(email: String): Result {
    return if (android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
        Result(true)
    } else {
        Result(false, "error")
    }
}

但是它返回一个NullPointerException错误,因为需要对Patterns.email进行模拟。现在,我手动创建和测试模式,但不能测试上面的方法。

代码语言:javascript
复制
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来完成此操作,那么我就可以作为一个整体测试这个方法,而不是在测试中手动创建模式。

EN

回答 1

Stack Overflow用户

发布于 2018-04-18 14:58:38

我相信你可以用objectMockk,来自莫克:

代码语言:javascript
复制
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中处理的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49902569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档