Warum funktioniert diese Unit-Test-Code-Zeile? groovy.sql.Sql hat keinen Argument-Konstruktor.Warum funktioniert diese Groovy MetaClass-Anweisung mit SQL-Klasse?
Sql.metaClass.constructor = { dataSource -> return new Sql(); }
Diese Linie ist unter einigen anderen in einem Grails-app, die aus spottet ein SQL-Objekt Konstruktor und eine seiner Methoden. Es funktioniert großartig.
an der API für das Objekt Sql Sehen, ich sehe kein kein Argument Konstruktor: http://groovy.codehaus.org/api/groovy/sql/Sql.html
Dieser Stil den Konstruktor des überwiegenden Sql.metaClass.constructor verwendet, ist etwas, was ich zu Hause: http://manuel-palacio.blogspot.com/2010/07/groovy-tip-metaprogramming-1.html
Danke!
Schön! Danke für den bequemen Link zur Quelle auch! – finneycanhelp
Anstatt den Konstruktor zu ändern, habe ich festgestellt, dass ich die DataSource in den Dienst einstellen kann. Die Implementierung der DataSource-Schnittstelle erfolgt einfach und klein über die "als DataSource". Siehe http://groovy.codehaus.org/Groovy+way+to+implement+interfaces, wo es "as X" heißt. – finneycanhelp
Groovy 1.7 unterstützt auch anonyme innere Klassen. Arbeiten am besten mit einer neuen Version (z. B. 1.7.6). –