2012-06-01 70 views
1

我想开发一个模拟我的dao课程。我怎样才能嘲笑我的GenericDao的以下方法? :模拟单元测试

public List<T> getList(int max, int p) throws DataAccessException { 
    String t= type.getT(); 
    String sql = "from " + t+ " order by id desc"; 
    List<T> o= HibernateUtils(type, this.getSession().createQuery(sql).setFirstResult(max* (p- 1)).setMaxResults(max).list()); 
    return o; 
} 

里面的东西这样的:

@Override 
public List<T> getList(int maxResults, int pageNumber) { 
    List<T> list = new ArrayList<T>(); 

    //...... 

    return list; 
} 

回答

1

呼叫getList()然后用对结果的subList()方法将其切成页面。

你会想要使用LinkedHashMap作为你的地图实现,以确保值的顺序不会改变。

试试这个:

@Override 
public List<T> getListByPage(int maxResults, int pageNumber) { 
    List<T> list = getList(); 

    if(list.size() > maxResults) { 
     list = list.subList(0, maxResults); 
    } 

    int start = pageNumber * pageSize; 
    int end = Math.min(start + pageSize, list.size()); 

    if(list.size() < start) { 
     list = new ArrayList<T>(); 
    } else { 
     list = list.subList(start, end); 
    } 

    return list; 
} 
+0

可以请你告诉我一可能实施方案getListByPage方法吗?谢谢 – unnamed

+0

“pageNumber”是什么意思? –

+0

页码是存在的页面总数。我在我的webapp中做了pagiantion。 – unnamed