Mockito.spy 不改变真实对象

wil*_*dev 4 java junit unit-testing mockito

以某种方式调用间谍对象的方法对真正的间谍对象没有影响:

public class AAA {
    public int a;

    public void setA(int aa) {
        this.a = aa;
    }

    public int getA() {
        return a;
    }
}


public class Proof {
    @Test
    public void wtf() {
        AAA obj = new AAA();
        AAA spy = Mockito.spy(obj);

        spy.setA(22);

        assertThat(obj.getA(), equalTo(22));
    }
}
Run Code Online (Sandbox Code Playgroud)

怎么可能?我想Proof测试应该通过。

Ser*_*ema 5

正如 Mockito文档中所见:

Mockito不会将调用委托给传递的真实实例,而是实际创建它的副本。

这意味着原始对象obj不会被监视对象中发生的事情修改spy