监视类成员方法调用

问题描述 投票:0回答:1

我想写这样的东西:

this.spyObject = Mockito.spy(myObject);
...
verify(this.spiedObject, atLastOnce()).getMember().doSomething(any(OneClass.class))

this.spyObject = Mockito.spy(myObject);
...
verify(this.spiedObject.getMember(), atLastOnce()).doSomething(any(OneClass.class))

在 Junit 测试中, 知道 myObject 的构造函数是

public MyObject() {
    this.member = new Member()
}

显然,它不起作用!

最后,我将能够验证在

doSomething
上调用了
member
。 我对 Mockito 还很初学者:)

请问有什么帮助吗?

java junit mockito spy
1个回答
0
投票

听起来你也想

Member
成为一名间谍。在这种情况下,你可以这样做:

@RunWith(MockitoJUnitRunner.class)    
public class SomeTestClass {
    private MyObject myObjectSpy;
    private Member memberSpy;

    @Test
    public void someTest() {
        memberSpy = spy(Member.class);
        myObjectSpy = spy(MyObject.class);
        doReturn(memberSpy).when(myObjectSpy).getMember();
        ...
        verify(memberSpy, atLeastOnce()).doSomething(any(OneClass.class));
    }
}

请注意,如果您打算

模拟doReturn(...)而不是其其他功能,则将
getMember()
与间谍一起使用是部分嘲笑。在这种情况下,请考虑使用完整的模拟并确定其其他函数的返回值应该是什么。

© www.soinside.com 2019 - 2024. All rights reserved.