不能与功能进行单元测试,有个createCriteria()语句
问题描述:
我想写一个单元测试(于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:[]。 我想这是因为调用执行某些数据库连接和查询的函数? 你能帮我写这个测试吗?非常感谢!
答
条件查询在单元测试中不可用,且不由mockDomain
提供。您可以自己模拟您的条件查询,例如与mockFor
,或者让你的测试成为一个集成测试,你可以访问完整的数据库环境。
这里是你怎么能嘲笑你查询的例子:
mockFor(People).demand.static.createCriteria = { ->
[list: { closure -> [ <some mock objects> ] } ]
}