考虑以下示例
如果
假设我不能修改 Foo 类(实际上我可以,但是只是为了论证),有没有办法仅为这个
明确一下,我想模拟该类的所有实例,而不仅仅是一个实例(对于这个问题,有容易的解决方法,不需要使用
MockUp
类型的类 Foo
,它在构造函数中拦截 Bar
,然后使用 Bar
实现 toString()
方法;public class FooStub extends MockUp<Foo> {
private Bar bar;
@Mock
public void $init(Bar bar) {
this.bar = bar;
}
@Mock
public String toString() {
return bar.toString();
}
}
如果
Foo
恰好覆盖了 toString()
,一切正常。否则,你会得到一个 IllegalArgumentException
:"找不到以下模拟的匹配真实方法"。我从这里了解到 JMockit 不会查找基类,因此无法找到要模拟的 toString()
方法。假设我不能修改 Foo 类(实际上我可以,但是只是为了论证),有没有办法仅为这个
Foo
类模拟 toString()
?明确一下,我想模拟该类的所有实例,而不仅仅是一个实例(对于这个问题,有容易的解决方法,不需要使用
MockUp
)。