我正在使用 Struts2 框架,并希望对execute
以下方法进行单元测试:
public String execute() {
setDao((MyDAO) ApplicationInitializer.getApplicationContext().getBean("MyDAO"));
setUserPrincipal(); //fetches attribute from request and stores it in a var
setGroupValue(); //
setResults(getMyDao().getReportResults(getActionValue(), getTabName());
setFirstResultSet((List) getResults()[0]);
setSecondResultSet((List) getResults()[1]);
return SUCCESS;
}
如您所见,大部分逻辑与数据库相关。那么我将如何对这个功能进行单元测试呢?我想通过模拟HTTPServletRequest
其中的几个请求变量来进行单元测试。
我的问题是:
- 我如何伪造/模拟请求变量,就好像它来自浏览器一样
- 我的单元测试是否应该调用实际的 DAO 并确保数据返回?
- 如果是这样,我如何从单元测试中调用 DAO,因为 DAO 绑定到服务器,因为 jndi 池设置驻留在应用程序服务器上。
我很感激任何展示如何真正做到这一点的书/文章。