假设我有一个班级
class SomeClass
{
public void methodA()
{}
public void methodB()
{}
public void someMethod()
{
methodA();
methodB();
}
}
我想用Mockito测试someMethod()的行为。
我能想到的唯一方法是使用spy();
像
这样的东西SomeClass someClass = spy(new SomeClass());
someClass.someMethod();
InOrder inOrder = inOrder(someClass);
inOrder.verify(someClass).methodA();
inOrder.verify(someClass).methodB();
我是模拟人员和文档的新手
“应该谨慎使用真正的间谍,例如在处理遗留代码时。”
所以也许我错过了一些东西,并且有更好的(正确的)方法来验证方法A和方法B是否被调用而没有在测试用例中明确地调用它们。
感谢。
答案 0 :(得分:6)
是的,spy()
适合您的目的。警告是由于实际方法被调用,因此您可能会得到意想不到的结果(例如 - 从银行账户中提取真实货币)
答案 1 :(得分:0)
如果你的代码需要间谍进行单元测试 - 那就错了。 间谍是代码气味的第一个标志。 在您的示例中,您有两种方法可以避免它: