Как охватить все нижеследующие строки в Junit / Mockito - PullRequest
0 голосов
/ 06 июля 2018

Я пытался насмехаться над JdbcTemplate jdbcTemplate, но это не охватывало то, что внутри

новый сотрудник (.......);

Пожалуйста, дайте мне знать, есть ли способ закрыть эти строки внутри нового сотрудника (...)?

public List<Employee> findByCustIdAndType(long Id, String type) 
    {
        return jdbcTemplate.query(SQL.getEmployee(Id, type),
                (rs, rowNum) -> new Employee(rs.getLong("CUSTOMER_ID"), 
                                             rs.getLong("ANCHOR_CUSTOMER_ID") ,
                                             rs.getString("SEGMENT"), 
                                             rs.getDate("END_TS")));
    }

1 Ответ

0 голосов
/ 06 июля 2018

Попробуйте использовать Mockito для захвата лямбды, которая является RowMapper<Employee>. Затем вызовите его с макетом ResultSet, настроенным на возврат ожидаемых значений, чтобы можно было подтвердить возвращенные значения Employee. Вот пример:

@RunWith(MockitoJUnitRunner.class)
public class EmployeeDAOTest {
    private static final long CUSTOMER_ID = 1;
    private static final long ANCHOR_CUSTOMER_ID = 2;
    private static final String SEGMENT = "A";
    private static final Date END_TS = Date.valueOf(LocalDate.now());

    @InjectMocks
    private EmployeeDAO dao;

    @Mock   
    private JdbcTemplate jdbcTemplate;

    @Mock   
    private ResultSet resultSet;

    @Captor
    private ArgumentCaptor<RowMapper<Employee>> rowMapperCaptor;

    @Before
    public void prepareTest() throws SQLException {
        when(resultSet.getLong("CUSTOMER_ID")).thenReturn(CUSTOMER_ID);
        when(resultSet.getLong("ANCHOR_CUSTOMER_ID")).thenReturn(ANCHOR_CUSTOMER_ID);
        when(resultSet.getString("SEGMENT")).thenReturn(SEGMENT);
        when(resultSet.getDate("END_TS")).thenReturn(END_TS);
    }

    @Test
    public void test() throws SQLException {
        dao.findByCustIdAndType(0, null);

        verify(jdbcTemplate).query(anyString(), rowMapperCaptor.capture());
        RowMapper<Employee> rowMapper = rowMapperCaptor.getValue();
        Employee employee = rowMapper.mapRow(resultSet, 1);
        assertEquals(CUSTOMER_ID, employee.getCustomerId());
        assertEquals(ANCHOR_CUSTOMER_ID, employee.getAnchorCustomerId());
        assertEquals(SEGMENT, employee.getSegment());
        assertEquals(END_TS, employee.getEndTs());
    }

}
...