2014-04-01 52 views
2

我想验证业务逻辑是否将预期的user对象传递给dao,但我无法确定如何为它编写自定义参数匹配器。如何在spec2中使用mockito定义自定义参数匹配器?

case class User(name:String, random: Double) 

里面包含了double领域,我需要做的是一些特殊的比较:

"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类。

mymatcher是我要定义的匹配:

def mymatcher(expected: User) = ??? { 
    // compare `name` and `random` 
} 

但我不知道该怎么做,在spec2,并不能找到任何有用的文件。任何帮助?

回答

2

我使用beLike matcher。像这样:

one(daoMock).insert { beLike[MyEntity] { case t:Entity => { 
    t.summary mustEqual "Summary" 
    t.description mustEqual "Description" 
}}} 

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

+0

beLike'匹配器需要导入什么? –

+0

@Zoltán当我问到它是从“*匹配者”特征之一继承的特征“规范”时。 (规格2 2.3.12) –