一般来说:是否可以为我自己不创建的对象调用方法的原始实现?我的意思是,我可以调用inv.proceed()
在测试代码中创建的实例,但我不知道如何为在测试代码中创建的实例调用。原因是,我知道在我的控制之外模拟实例的唯一方法是使用@Mocked
注释,但它inv.proceed()
会因“UnsupportedOperationException”而失败。
详细说明:我使用如下代码收到此错误:
new NonStrictExpectations() {
@Mocked("process")
MyClassUnderTest o;
{
o.process(any);
result = new Delegate<MyClassUnderTest>() {
public void process(Invocation inv, Object o) {
inv.proceed(); //Fails on this line with UnsupportedOperationException
}
}
}
}
当我使用动态部分模拟时,异常消失了:
new NonStrictExpectations(o) {
{
o.process(any);
result = new Delegate<MyClassUnderTest>() {
public void process(Invocation inv, Object o) {
inv.proceed();
}
}
}
}
我不明白这一点。@Mocked 不是“可注入的”吗?