我正在嘲笑Abstract类但是它给出了一个错误,我无法实例化抽象类。我想我错过了一些嘲弄的基础知识。那么为什么我不能模拟抽象类呢?
@Repository
public abstract class AbstractAccountDaoImpl implements AccountDao{
@Autowired
SimpleJdbcCall simpleJdbcCall;
@Override
public List<Account> getAccounts(String id){
SimpleJdbcCall simpleJdbcCall = getNewSimpleJdbcCall()
.withProcedureName(getAccountsProc)
.declareParameters(new SqlParameter("account_id", Types.VARCHAR));
Object[] params = new Object[] {id};
simpleJdbcCall.returningResultSet("result", new AccountRowMapper());
Map<String, Object> map = simpleJdbcCall.execute(params);
return (List<Account>) map.get("result");
}
以下是我的JUnit:
public class AbstractAccountDaoImplTest {
private String IDS = "IDS";
@InjectMocks
private AbstractAccountDaoImpl abstractAccountDaoImpl;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void shouldReturnAccounts() {
Map<String, Object> map = new HashMap<>();
map.put("result", Arrays.asList(new Account(), new Account()));
simpleJdbcCallDefaultMock(simpleJdbcCallProvider, map);
List<Account> resultList = abstractAccountDaoImpl.getAccounts(IDS);
assertEquals(2, resultList.size());
}
public static void simpleJdbcCallDefaultMock(SimpleJdbcCallProvider simpleJdbcCallProvider, Map<String, Object> map) {
SimpleJdbcCall simpleJdbcCall = Mockito.mock(SimpleJdbcCall.class);
when(simpleJdbcCallProvider.getNewSimpleJdbcCall()).thenReturn(simpleJdbcCall);
}
我如何使用Mockito嘲笑这个?或者我是否需要使用别的东西来嘲笑这个?
如果我从mockito模拟,它会给我一个错误,无法实例化AbstractAccountDaoImpl
。
有什么建议吗?