【发布时间】:2015-02-13 21:18:31
【问题描述】:
我只是尝试编写这个简单的代码来测试使用 metaClass 的覆盖方法。
代码在这里:
class Hello {
public Hello()
{
Foo()
}
public void Foo()
{
println "old"
}
}
它有一个 Foo() 方法,它简单地打印“旧”并且它被构造函数调用。
这是测试代码:
class HelloTest {
@Test
public void test() {
boolean methodFooWasCalled = false
Hello.metaClass.Foo = {-> println "new"
methodFooWasCalled = true
}
Hello hello = new Hello()
assertTrue methodFooWasCalled == true
}
}
我期待输出应该是“新的”,因为 Foo() 已被覆盖。但它仍然打印“旧”。有谁知道它为什么失败?谢谢
【问题讨论】:
标签: unit-testing groovy mocking metaclass