我有以下代码
class ClassA {
static String getA() {
'A'
}
String string
ClassA() {
println getA()
println ClassA.getA()
string = getA()
}
}
// Mocking
ClassA.metaClass.static.getA = { -> 'B' }
ClassA.metaClass.getA = { -> 'B' }
assert ClassA.getA() == 'B'
def test = new ClassA()
assert test.getA() == 'B'
assert test.string == 'B'
最后一个断言
assert test.string == 'B'
没有通过。所以我理解的是getA()
在构造函数和短名称(不是ClassA.getA()
而只是getA()
)中调用时不会被替换。
有谁知道为什么会发生这种情况和/或如何修复它?
编辑:当在字段初始化String string = getA()
中使用时,该方法会返回正确的值。