-3

データベースからエントリを選択するためのインターフェースhavinf関数を拡張するimplクラスがあります-

public class EmployeeDAOJDBCTemplateImpl implements EmployeeDAO {

private DataSource dataSource;

public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
}
public List<Employee> getAll() {
    String query = "select id, name, role from Employee";
    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    List<Employee> empList = new ArrayList<Employee>();

    List<Map<String,Object>> empRows = jdbcTemplate.queryForList(query);

    for(Map<String,Object> empRow : empRows){
        Employee emp = new Employee();
        emp.setId(Integer.parseInt(String.valueOf(empRow.get("id"))));
        emp.setName(String.valueOf(empRow.get("name")));
        emp.setRole(String.valueOf(empRow.get("role")));
        empList.add(emp);
    }
    return empList;
}

}

Mockito フレームワークを使用してモックするにはどうすればよいですか?

4

1 に答える 1

0

現状では、注入された唯一の依存関係 (DataSource) がSQL をサポートするデータベース接続全体として表示される必要があるため、これも Mockito の適切な使用例ではありません。特に別の共同作業者 (JdbcTemplate) に渡される場合、そのような強力で深いインターフェイスをモックすることは実際的ではありません。

to の変換をテストするためにリファクタリングすることはできますList<Map<String, Object>>List<Employee>、データベースやそのスキーマがまったく関係ないため、特に有用なテストではない可能性があります。

代わりに、H2または別のインメモリ データベースを使用して、期待どおりにデータを準備し、正しく表示されることを確認することをお勧めしますList<Employee>。このようなテストでは、Mockito はまったく使用されませんが、記述したすべてのコードが決定論的な方法で実行されます。

于 2016-08-12T17:20:45.753 に答える