在方法中实例化了一个类的本地实例。 例如
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
}
}
在测试foo时,使用powerMock,我想进行验证以确保调用doSomething()和doSomethingAdditional()方法。我正在寻找Mockito.verify(ObjectName).functionName()的内容。有什么建议??
答案 0 :(得分:2)
PowerMock与Mockito合作。您仍应具备使用Mockito呼叫进行验证的所有功能。
模仿B
后,当您模拟其功能然后将其传递到A
时,您可以使用Mockito.verify
。
verify(mockBObject).doSomething();
verify(mockBObject).doSomethingAdditional();
这可能需要一些额外的步骤来将模拟对象挂钩到A
,因为你没有可以定义B
传入的构造函数,或者有一些构造函数可以挂钩。如果您只是在创建A
时B
初始化A
,则可以使用一些PowerMockito工具告诉它该做什么。只是嘲笑B
是行不通的,因为在设置A
时,它不知道在其代码中使用您的模拟对象作为B
内部。
PowerMockito.whenNew(B.class).withNoArguments().thenReturn(mockBObject);
截至目前,B
永远不会设置或初始化,因此可能会导致一些问题。如果B
是您假定的静态单例对象是在其他地方创建的,则可以对静态getInstance()
调用进行类似的模拟,以返回模拟B
。