繁体   English   中英

模拟jdbcTemplate由类实例化

[英]Mock jdbcTemplate instantiated by class

我有一个类,它使用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 ...
     }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM