我想编写一个单元测试(通过JUnit)来测试Groovy中这个函数的值:
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:[]。 我想是因为调用执行某些数据库连接和查询的函数? 你能帮我写这个测试吗?非常感谢你!
答案 0 :(得分:3)
标准查询在单元测试中不可用,并且不由mockDomain
提供。您可以自己模拟标准查询,例如使用mockFor
,或者让您的测试成为集成测试,您可以访问完整的数据库环境。
以下是如何模拟查询的示例:
mockFor(People).demand.static.createCriteria = { ->
[list: { closure -> [ <some mock objects> ] } ]
}