我想验证业务逻辑是否将预期的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
来做,也找不到任何有用的文件。有什么帮助吗?
我使用beLike matcher。喜欢这个:
one(daoMock).insert { beLike[MyEntity] { case t:Entity => {
t.summary mustEqual "Summary"
t.description mustEqual "Description"
}}}
在belike匹配器中,您可以使用普通值匹配器。
对于模拟匹配,我使用了Matchers.argThat
import org.mockito.Matchers
import org.mockito.Mockito.verify
verify(service).methodCall(Matchers.argThat({
case CaseClass("const", arg2) =>
arg2 == expected
case _ => false
}))