【发布时间】:2015-10-29 14:43:39
【问题描述】:
代码
public class A{
public A (B b, C c){
//do something here
}
}
为了测试,我想创建一个模拟对象。我现在做的是
B bmock = mock(B);
C cmock = mock(C);
A aobject = new A(bmock, cmock);
但是,这不允许我在对象上调用 verify(),因为它没有被模拟。该怎么做?
【问题讨论】:
-
如果
A是您正在测试的对象,为什么还要在A上调用verify? -
这是有道理的。但我打算验证一个对象是否正在调用其他函数。我在做 verify(aobject, times(1)).somefunction();
-
不要为此使用模拟。使您的方法更改或返回某些状态并使用断言进行验证。
-
如果你需要验证类 A 调用了一个方法,这个方法应该在依赖项之一(即类 B 或 C)上。您不应该让测试可见 - 测试行为,而不是实现。
标签: java unit-testing mocking mockito powermockito