2012-05-13 11 views
1

で呼び出されたことを確認すると、私はこのサービスを考えてみましょう:モッキング工場やメソッドが返さ種類

public class Service 
{ 
    ... 

    public Service(IFactory factory) 
    { 
     ... 
    } 

    public void Method() 
    { 
     IInsatnce instance1 = factory.CreateInstance(params1); 
     IInstance instance2 = factory.CreateInstance(params2); 

     instance1.CallMethod1(); 
     instance2.CallMethod2(); 
    }  
} 

私はそれらの作成されたインスタンスのメソッドが呼び出されたテストで検証したいです。私が理解していない限り、模擬インスタンスを返すファクトリのモックを作成する必要があります。しかし、私はMethod()で作成されるモックのすべてのインスタンスについての参照を保持し、それらを使用してメソッドコールを検証する必要がありますか?それは正しいアプローチですか?

答えて

0

これはかなり一般的な使用例です。はい、モックされた工場からモックを返却し、そのモックで検証を行う必要があります。ここでは構文を使用します。

IInstance instanceMock1 = mock(IInstance.class); 
IInstance instanceMock2 = mock(IInstance.class); 
IFactory factoryMock = mock(IFactory.class); 

given(factoryMock(params1)).willReturn(instanceMock1); 
given(factoryMock(params2)).willReturn(instanceMock2); 

//... 
verify(instanceMock1).CallMethod1(); 
verify(instanceMock2).CallMethod2();