I'm trying to simplify a test case 1st code block to something similar shown in the 2nd code block. I have two questions:
- Can I mock a list of custom objects?
- Can I assert a mocked list of custom objects with the fields in a returned list of objects?
Is something similar achieveable?
@Test
public void testStudentSuccess() {
Student st = new Student();
st.setRollNumber("1234");
st.setFeeAmount("1000");
List<Student> stList = new ArrayList<Student>();
stList.add(st);
Map<String, Object> simpleJdbcCallResult = new HashMap<String, Object>();
simpleJdbcCallResult.put("X_GET_DATA", stList);
when(simpleJdbcCall.getSimpleJdbcCall(any(String.class), any(String.class), any(String.class),
any(String.class), any(String.class), any(String.class), any(String.class), any(String.class),
any(StudentRowMapper.class))).thenReturn(simpleJdbcCallResult);
List<Student> studentList = opusPackageRepo.getPolicyStudent("123", "123");
Student student = studentList.get(0);
assertEquals(student.getRollNumber(), "1234");
assertEquals(student.getFeeAmount(), "1000");
}
To something like this (see the comments -> //):
@Test
public void testStudentSuccess() {
List<Student> stList = Mockito.mock(new ArrayList<Student>()); // 1. IS SOMTHING SIMILAR TO THIS POSSIBLE?
Map<String, Object> simpleJdbcCallResult = new HashMap<String, Object>();
simpleJdbcCallResult.put("X_GET_DATA", Mockito.mock(new ArrayList<Student>()));
when(simpleJdbcCall.getSimpleJdbcCall(any(String.class), any(String.class), any(String.class),
any(String.class), any(String.class), any(String.class), any(String.class), any(String.class),
any(StudentRowMapper.class))).thenReturn(simpleJdbcCallResult);
List<Student> studentList = opusPackageRepo.getPolicyStudent("123", "123");
assertEquals(studentList, stList); // 2. CAN I ASSERT EQUALS A MOCK WITH A RETURNED LIST?
}