2017-12-14 4 views
0

私はユニットテストケースでSoPServiceClientクラスのインスタンスを作成するために@InjectMocksを使用しています。私は私のユニットテストケースでプロパティをフォローするインスタンスを作成しようとしています。Mockitoを使用してMocking @ Resourceスプリングプロパティを使用して

@Resource(name="ldapClient") private SoapServiceClient soapServiceClient;

しかし、修飾名 "ldapClient"は、異なるタイプ(SoapServiceClientではなく)のClientFactoryのコンポーネントです。 SoapServiceClientのインスタンスを返すオーバーライドされた関数を持っています。

@Component("ldapClient") 
public class ClientFactory implements FactoryBean{ 
@Override 
public Object getInstance() throws Exception {  
    final SoapServiceClient service = new SoapServiceClient(endpoint); 
    return service;  
} 
} 

私はそれはSoapServiceClientのインスタンスを作成し、直接ではなく、ClientFactoryのクラスののgetInstance()メソッドを介してそれを作成している

@InjectMocks 
private SoapServiceClient soapServiceClient; 

を使用するとき、どのように私はSoapServiceClientのインスタンスを作成することができます。私は@InjectMocksがClientFactory getInstanceメソッドを使ってSoapServiceClientのインスタンスを作成したいと思っています。

本当にありがとうございます。

答えて

3

私は@InjectMocksはなぜ単に嘲笑SoapServiceClientを返すためにClientFactorygetInstance()ファクトリメソッドをモックではない

ClientFactoryのgetInstanceメソッドを使用してSoapServiceClientのインスタンスを作成します。

@Mock 
ClientFactory clientFactoryMock; 
@Mock 
SoapServiceClient soapServiceClientMock; 

@Test 
public void myTest(){ 
    ... 
    //add record for soapServiceClientMock 
    Mockito.when(soapServiceClientMock.xxx()).return(...); 
    // and return soapServiceClientMock as getInstance() is invoked   
    Mockito.when(clientFactoryMock.getInstance()).return(soapServiceClientMock); 
} 
関連する問題