2017-06-16 20 views
1

new jdbcTemplate(dataSource)を使用して独自のjdbcTemplateを作成し、必要に応じて新しいNameParameterJdbcTemplate(jdbcTemplate)を使用して独自のNamedParameterJdbcTemplateを作成するクラスを取得しました。どのようにしてMockitoを使って、テンプレートの単体テスト時に戻り値を制御できる模擬テンプレートができるようにするのですか?クラスによってインスタンス化されたモックjdbcTemplate

1)作成し、特殊な方法:

+0

あなたはすでにSpringを使用していますが、新しいインスタンスを作成するのではなく、NamedParameterJdbcTemplateを挿入するのはなぜですか? –

答えて

0

あなたはこれらのオブジェクトを作成し、@Spy機能の使用方法とそれらをあざけるだろう、特別なパッケージレベルのメソッドを作成することができ

public class MyClass{ 

    private Datasource ds; 

    public void methodUnderTest(){ 
     JdbcTemplate template = getTemplateInstance(ds); 

     ... 
    } 

    JdbcTemplate getTemplateInstance(Datasource ds){ 
     return new JdbcTemplate(ds); 
    } 
} 

2)クラスをスパイクし、インスタンス作成メソッドをモックします。

public class MyClassTest{ 

    @Spy 
    @InjectMocks 
    private MyClass myClassSpy; 

    @Mock 
    private Datasource dsMock; 

    @Mock 
    private JdbcTemplate templateMock; 

    @Before 
    public void init(){ 
     MockitoAnnotations.initMocks(this); 
    } 

    @Test 
    public void test(){ 
      // Arrange 
      doReturn(templateMock).when(myClassSpy).getTemplateInstance(dsMock); 

      // Act and Assert ... 
    } 
} 
関連する問題