0
我有以下用dummy dummy groovy類編寫的測試。Groovy Expando Metaclass安裝人員訪問
@Test
void returnPropertyIfPropertyIsAvailableOnMetaClass(){
def emp=new Employee()
emp.metaClass.sayGutenAbend="Guten Abend"
assert emp.sayGutenAbend=="Guten Abend"
assert emp.sayGutenAbend==emp.metaClass.getProperty(emp,"sayGutenAbend")
emp.metaClass.setProperty(emp,"sayGutenAbend","Guten Morgen")
assert emp.sayGutenAbend=="Guten Morgen"
assert emp.sayGutenAbend==emp.metaClass.getProperty(emp,"sayGutenAbend");
}
上述測試通過,而下面沒有─
@Test
void returnPropertyIfPropertyIsAvailableOnMetaClass_Fails(){
def emp=new Employee()
emp.metaClass.sayGutenAbend="Guten Abend"
assert emp.sayGutenAbend=="Guten Abend"
assert emp.sayGutenAbend==emp.metaClass.getProperty(emp,"sayGutenAbend")
emp.metaClass.sayGutenAbend="Guten Morgen"
assert emp.sayGutenAbend=="Guten Morgen"
assert emp.sayGutenAbend==emp.metaClass.getProperty(emp,"sayGutenAbend")
}
從前面的代碼示例是唯一的差異,設置在元類相同的屬性的新值。只是好奇。任何人都可以指出爲什麼這是這樣工作嗎?