为什么这行单元测试代码有效? groovy.sql.Sql没有无参数构造函数。
Sql.metaClass.constructor = { dataSource -> return new Sql(); }
该行是grails应用程序中的其他一行,它模拟了Sql对象的构造函数及其方法之一。它很棒。
查看Sql对象的API,我没有看到无参数构造函数:http://groovy.codehaus.org/api/groovy/sql/Sql.html
这种使用Sql.metaClass.constructor覆盖构造函数的方式是我在以下位置找到的: http://manuel-palacio.blogspot.com/2010/07/groovy-tip-metaprogramming-1.html
谢谢!
答案 0 :(得分:1)
groovy.sql.Sql
没有公共的no-args构造函数,但是as can be seen in the source,它确实有一个私有的no-args构造函数 - 我想是为了支持语法new Sql(connection: connection)
?< / p>
但是,我有点惊讶的是,这种存根技术不会产生异常,例如,在运行sql.execute
之类的时候。