模拟 jdbc 按类实例化的模板



我得到了一个类,它使用new jdbcTemplate(dataSource)创建自己的jdbcTemplate,并在需要时使用新NameParameterJdbcTemplate(jdbcTemplate)创建自己的NamedParameterJdbcTemplate。如何使用 Mockito 来实现,以便在单元测试时模板是可以控制其返回值的模拟模板?

您可以创建特殊的包级方法来创建这些对象,然后使用@Spy功能模拟它们:

1(创建专用方法:

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 ...
     }
}

相关内容

  • 没有找到相关文章

最新更新