首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在spec2中使用mockito定义自定义参数匹配器?

如何在spec2中使用mockito定义自定义参数匹配器?
EN

Stack Overflow用户
提问于 2014-04-01 15:34:16
回答 2查看 1.7K关注 0票数 3

我想验证业务逻辑是否将预期的user对象传递给dao,但我不知道如何为它编写自定义参数匹配器。

代码语言:javascript
复制
"user" should {
    "be saved" in {
        val dao = new UserDao()
        dao.save(any[User]) returns mock[User]

        runMyBusinessLogic();

        val expectedUser = new User("Freewind", 123.23234)
        there was one(dao).save(mymatcher(expectedUser));
    }
 }

User类:

代码语言:javascript
复制
case class User(name:String, random: Double)

它包含一个double字段,我需要对它做一些特殊的比较。

mymatcher是我想要定义的匹配器:

代码语言:javascript
复制
def mymatcher(expected: User) = ??? {
    // compare `name` and `random`
}

但我不知道如何在spec2中做到这一点,也找不到任何有用的文档。有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2014-04-01 16:15:03

我使用beLike匹配器。如下所示:

代码语言:javascript
复制
one(daoMock).insert { beLike[MyEntity] { case t:Entity => {
  t.summary mustEqual "Summary"
  t.description mustEqual "Description"
}}}

在beLike匹配器中,你可以使用普通的值匹配器。

票数 3
EN

Stack Overflow用户

发布于 2019-10-22 16:28:17

对于模拟匹配,我使用了Matchers.argThat

代码语言:javascript
复制
import org.mockito.Matchers
import org.mockito.Mockito.verify

verify(service).methodCall(Matchers.argThat({
  case CaseClass("const", arg2) =>
    arg2 == expected
  case _ => false
}))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22779508

复制
相关文章

相似问题

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