我想验证业务逻辑是否将预期的user
对象传递给dao,但我无法想象如何为它编写自定义参数匹配器。
"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
类:
case class User(name:String, random: Double)
其中包含double
字段,我需要对其进行一些特殊比较。
mymatcher
是我想要定义的匹配器:
def mymatcher(expected: User) = ??? {
// compare `name` and `random`
}
但我不知道如何在spec2
中执行此操作,并且无法找到任何有用的文档。有帮助吗?
答案 0 :(得分:2)
我使用beLike匹配器。像这样:
one(daoMock).insert { beLike[MyEntity] { case t:Entity => {
t.summary mustEqual "Summary"
t.description mustEqual "Description"
}}}
在beLike matcher里面你可以使用普通的价值匹配器。
答案 1 :(得分:0)
对于模拟匹配,我使用了Matchers.argThat
import org.mockito.Matchers
import org.mockito.Mockito.verify
verify(service).methodCall(Matchers.argThat({
case CaseClass("const", arg2) =>
arg2 == expected
case _ => false
}))