我试图在groovy sql类上覆盖方法调用,我能够做到。但是我需要根据顺序进行不同的实现。
Sql.metaClass.call = {String sql, List params, Closure c -> c(mockResultSet)} //first time should call this method
Sql.metaClass.call = {String sql, List params, Closure c -> c(expectedLookupId)} //second time should call this method.
答案 0 :(得分:0)
实现它的一种方法是在类中使用内部标志。 然后根据标志调用不同的实现。
Sql.metaClass.first = true
Sql.metaClass.call = {String sql, List params, Closure c ->
if (first){
c(mockResultSet)
first = false
}else{
c(expectedLookupId)
}
}
答案 1 :(得分:0)
感谢@Joachim的建议。这对我有用。
def counter = 1
Sql.metaClass.call = {String sql, List params, Closure c ->
if(counter ==1 ) {
c(mockResultSet)
counter++;
}else{
c(expectedLookupId)
}
}