0

在方法内部实例化了一个类的本地实例。例如

  class TestMe{
     public void foo()
     {
       A a = new A();
       a.setState(this);
     }
    }




class A
{
    private B b;

    public void setState(TestMe tm)
    {
        b.doSomething(); //returns void
        b.doSomethingAdditional(); //returns void
    }
}

在使用 powerMock 测试 foo 时,我想进行验证以确保调用方法 doSomething() 和 doSomethingAdditional()。我正在寻找类似 Mockito.verify(ObjectName).functionName() 的东西来做。有什么建议么??

4

1 回答 1

2

PowerMock 与 Mockito 结合使用。您应该仍然拥有使用 Mockito 调用进行验证的所有功能。

一旦你模拟B了,当你模拟它的函数然后将它传递给A你时,你就可以使用Mockito.verify.

verify(mockBObject).doSomething();
verify(mockBObject).doSomethingAdditional();

这可能需要一些额外的步骤来将您的模拟对象挂钩到A,因为您没有可以定义B传入的构造函数,或者有一些构造函数可以挂钩。如果您只是在创建时进行A初始化,您可以使用一些 PowerMockito 工具来告诉它要做什么。只是模拟是不行的,因为当你设置好时,它不知道在它的代码中使用你的模拟对象作为内部对象。BABAB

PowerMockito.whenNew(B.class).withNoArguments().thenReturn(mockBObject);

截至目前B,从未设置或初始化,因此可能会导致一些问题。如果B是您假设在其他地方创建的静态单例对象,您可以对静态getInstance()调用进行类似的模拟以返回B.

于 2013-09-25T21:13:36.493 回答