As mentioned earlier, simulates Grails using BindDynamicMethod. This works for me on Grails 1.3.5:
import org.codehaus.groovy.grails.web.metaclass.BindDynamicMethod protected void setUp() { def mc = controller.class.metaClass def bind = new BindDynamicMethod() mc.bindData = { Object target, Object args -> bind.invoke(delegate, "bindData", [ target, args ] as Object[]) } mc.bindData = { Object target, Object args, List disallowed -> bind.invoke(delegate, "bindData", [ target, args, [ exclude: disallowed ]] as Object[]) } mc.bindData = { Object target, Object args, List disallowed, String filter -> bind.invoke(delegate, "bindData", [ target, args, [ exclude: disallowed ], filter ] as Object[]) } mc.bindData = { Object target, Object args, Map includeExclude -> bind.invoke(delegate, "bindData", [ target, args, includeExclude ] as Object[]) } mc.bindData = { Object target, Object args, Map includeExclude, String filter -> bind.invoke(delegate, "bindData", [ target, args, includeExclude, filter ] as Object[]) } mc.bindData = { Object target, Object args, String filter -> bind.invoke(delegate, "bindData", [ target, args, filter ] as Object[]) } }
This is copied from org/codehaus/groovy/grails/plugins/web/ControllersGrailsPlugin.groovy and therefore supports all forms of bindData .
We hope that the situation will improve with the upcoming Grails 1.4 and testing mixins .
Gustavo giráldez
source share