1
实例化我有一个类,它使用new jdbcTemplate(dataSource)
创建它自己的jdbcTemplate,并在需要时使用新的NameParameterJdbcTemplate(jdbcTemplate)
创建它自己的NamedParameterJdbcTemplate。我如何使用Mockito进行设置,以便在单元测试模板时使用模拟模板来控制返回值?模拟jdbcTemplate由类
实例化我有一个类,它使用new jdbcTemplate(dataSource)
创建它自己的jdbcTemplate,并在需要时使用新的NameParameterJdbcTemplate(jdbcTemplate)
创建它自己的NamedParameterJdbcTemplate。我如何使用Mockito进行设置,以便在单元测试模板时使用模拟模板来控制返回值?模拟jdbcTemplate由类
您可以创建这将创建这些对象,然后用@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 ...
}
}
你已经在使用Spring,为什么不注入NamedParameterJdbcTemplate而不是创建一个新实例? –