使用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手册中找到如何做到这一点。
答案 0 :(得分:2)
您可以将任何specs2匹配器传递给模拟方法:
got{
one(sessionDao).getByUid(sessionUID)
one(sessionDao).update(beLike[Session] { case s: Session => s.lastUsed must be_>(last) })
}