2

我想编写一个单元测试(通过 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: No signature of method: People.createCriteria() is applicable for argument types: ()值:[]。我猜是因为调用了执行一些数据库连接和查询的函数?你能帮我写这个测试吗?非常感谢!

4

1 回答 1

3

标准查询在单元测试中不可用,也不由mockDomain. 您可以自己模拟您的条件查询,例如使用mockFor,或者使您的测试成为集成测试,您可以访问完整的数据库环境。

这是一个如何模拟查询的示例:

mockFor(People).demand.static.createCriteria = { ->
    [list: { closure -> [ <some mock objects> ] } ]
}
于 2011-03-22T07:25:44.910 回答