2011-03-22 49 views
2

我想写一个单元测试(于JUnit)在Groovy来测试此函数的值:不能与功能进行单元测试,有个createCriteria()语句

String getPeopleNamesById(int[] peopleIds) { 
     List<String> names = People.createCriteria().list{ 
      projections { property("name") } 
      'in' ("id", peopleIds) 
     } 
     return names ? names.join(", ") : ""; 
    } 

但读操作时的单元测试总是失败这个语句:List names = People.createCriteria()。list {...} groovy.lang.MissingMethodException:没有方法的签名:People.createCriteria()适用于参数类型:()values:[]。 我想这是因为调用执行某些数据库连接和查询的函数? 你能帮我写这个测试吗?非常感谢!

回答

3

条件查询在单元测试中不可用,且不由mockDomain提供。您可以自己模拟您的条件查询,例如与mockFor,或者让你的测试成为一个集成测试,你可以访问完整的数据库环境。

这里是你怎么能嘲笑你查询的例子:

mockFor(People).demand.static.createCriteria = { -> 
    [list: { closure -> [ <some mock objects> ] } ] 
}