私はMockitoを初めて使います。
以下のクラスの場合、Mockito を使用して、が呼び出されたsomeMethod
後に が正確に 1 回呼び出されたことをどのように検証できますか?foo
public class Foo
{
public void foo(){
Bar bar = new Bar();
bar.someMethod();
}
}
以下の確認の電話をしたいのですが、
verify(bar, times(1)).someMethod();
bar
は のモックインスタンスですBar
。
ベストアンサー1
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 (テスト駆動開発) がコードの設計をどのように推進できるかを示す例です。