Scala 如何对传递给mockito mock的参数执行自定义检查

Scala 如何对传递给mockito mock的参数执行自定义检查,scala,mockito,specs2,Scala,Mockito,Specs2,我在使用specs2和mockito为scala项目编写测试时遇到问题。 有没有一种方法可以对正在测试的方法传递给模拟服务方法的参数执行一些复杂的检查?例如: session = .... sessionDao.getByUid(sessionUID).returns(Some(session)) val result = service.refreshSessionFor(token) result must beLeft got{ one(sessionDa

我在使用specs2和mockito为scala项目编写测试时遇到问题。 有没有一种方法可以对正在测试的方法传递给模拟服务方法的参数执行一些复杂的检查?例如:

  session = ....
  sessionDao.getByUid(sessionUID).returns(Some(session))

  val result = service.refreshSessionFor(token)

  result must beLeft

  got{
    one(sessionDao).getByUid(sessionUID)
    one(sessionDao).update(any[Session])
  }

问题是,我想检查会话对象的字段“lastUsed”是否已更新。唯一的方法是检查sessionDao.update方法的参数字段。但我在mockito手册中找不到如何做到这一点。

您可以将任何specs2匹配器传递给模拟方法:

got{
  one(sessionDao).getByUid(sessionUID)
  one(sessionDao).update(beLike[Session] { case s: Session => s.lastUsed must be_>(last) })
}

你能发布你的课程内容吗?谢谢!我在看matcher的文档,但没看到这个!注意!小心,需要将hamcrest添加到依赖项中!