我是Mockito的新手。
给定下面的类,如何someMethod在调用后使用Mockito验证一次foo被调用的对象呢?
someMethod
public class Foo { public void foo(){ Bar bar = new Bar(); bar.someMethod(); } }
我想打以下电话,
verify(bar, times(1)).someMethod();
bar的模拟实例在哪里Bar?
bar
Bar
如果注入Bar实例,或用于创建Bar实例的工厂(或其他483种方法之一),则你将具有执行测试所需的访问权限。
工厂示例:
给定一个这样的Foo类:
public class Foo { private BarFactory barFactory; public Foo(BarFactory factory) { this.barFactory = factory; } public void foo() { Bar bar = this.barFactory.createBar(); bar.someMethod(); } }
在你的测试方法中,你可以像这样注入BarFactory:
@Test public void testDoFoo() { Bar bar = mock(Bar.class); BarFactory myFactory = new BarFactory() { public Bar createBar() { return bar;} }; Foo foo = new Foo(myFactory); foo.foo(); verify(bar, times(1)).someMethod(); }
奖励:这是TDD如何推动代码设计的一个示例。