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域对象一起工作。
下面的测试通过Grails 2.3.8。
A超类…
// 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
}
}