Mockito.spy不改变真实对象



间谍对象上调用方法对真正的间谍对象没有影响:

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));
    }
}

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

如 Mockito 文档中所示:

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

这意味着原始对象obj不会随着间谍对象spy中发生的情况进行修改。

我做了一些测试,你应该对间谍而不是obj断言:

@Test
    public void wtf() {
        AAA obj = new AAA();
        AAA spy = Mockito.spy(obj);
        spy.setA(22);
        assertThat(spy.getA(), equalTo(22));
    }

相关内容

  • 没有找到相关文章

最新更新