Reputation: 4606
I inject method afterInsert
to metaClass instance when it hasProperty("auditable")
def injectMethod(object) {
if(object.hasProperty("auditable") {
object.metaClass.afterInsert = { doSomething }
}
}
How can I test that object
responds to afterInsert
?
I tried:
assert object.respondsTo("afterInsert")
and
assert object.hasProperty("afterInsert")
nothing
assert object.metaClass.afterInsert != null // Always true
Upvotes: 0
Views: 111
Reputation: 50285
Consider asserting as below w.r.t the example:
assert object.metaClass.respondsTo(object, "afterInsert")
assert !object.metaClass.respondsTo(object, "beforeInsert")
assuming object
is a Grails Domain class. In case object
is a base POGO, signature of hasProperty
can be similar to that of respondsTo
.
Upvotes: 2
Reputation: 14559
metaClass.respondsTo
?
class A {
def foo
}
a = new A()
assert a.hasProperty("foo")
assert !a.metaClass.respondsTo(a, "bar")
a.metaClass.bar = { 10 }
assert a.hasProperty("foo")
assert a.metaClass.respondsTo(a, "bar")
assert a.bar() == 10
Upvotes: 2