class A {
String a
}
class B extends A {
String b
}
现在我想在创建B
def instance = new B(a: "foo", b: "bar")
assert instance.b != null
只有它不起作用。
实际上它确实在纯Groovy中工作,但它在Spock测试中不适用于Grails域对象。
答案 0 :(得分:1)
以下测试通过了Grails 2.3.8。
超级班......
// grails-app/domain/inheritedproperties/SuperClass.groovy
package inheritedproperties
class SuperClass {
String a
}
子类......
// grails-app/domain/inheritedproperties/SubClass.groovy
package inheritedproperties
class SubClass extends SuperClass {
String b
}
Spock规范......
// test/unit/inheritedproperties/SubClassSpec.groovy
package inheritedproperties
import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(SubClass)
@Mock(SuperClass)
class SubClassSpec extends Specification {
void "test binding inherited properties"() {
when:
def instance = new SubClass(a: 'A', b: 'B')
then:
'A' == instance.a
'B' == instance.b
}
}