java - 我们如何在 JUnit 中模拟会话值(request.getSession())?
问题描述
private BankApp processSelection(HttpServletRequest request,
String[] facets, String selectedText) {
DebugUtility.debug(LOG, "Enter into JiraController :: processDashBoardPortFolioSelection()");
BankApp project = new BankApp();
List<BankApp> dataAgg = (List<BankApp>) request.getSession()
.getAttribute(PROJECT_WISE_SESSION);
if (CollectionUtils.isNotEmpty(dataAgg)) {
List<BankApp> projects = new ArrayList<>();
for (String currentProjectId : facets) {
Project currProject = vendorUtils.getProjectDetails(currentProjectId);
List<SourceProjectAssocation> sourceSystem = currProject.getSourceSytems("JIRA");
List<String> jiraProjects = new ArrayList<>();
sourceSystem.stream().forEach(s -> jiraProjects.add(s.getAssociatedJiraProject()));
for (BankApp projectData : dataAgg) {
if (jiraProjects.contains(projectData.getProjectKey())) {
projects.add(projectData);
}
}
}
project = processAllProjectsData(projects);
project.setProjectKey(selectedText);
project.setProjectsCount(projects.size());
}
DebugUtility.debug(LOG, "project in processDashBoardPortFolioSelection :: " + project);
DebugUtility.debug(LOG, "Exit from JiraController :: processDashBoardPortFolioSelection()");
return project;
}
我们如何为这个方法编写 junit 测试用例?我在这里面临的挑战是我们需要模拟request.getSession().getAttribute(PROJECT_WISE_SESSION)
. 所以我尝试when(request.getSession()).thenReturn(session);
了,但request.getSession()
我得到了null
.
解决方案
尝试类似的东西
@Test
public void test() {
HttpServletRequest requestMock = Mockito.mock(HttpServletRequest.class);
HttpSession sessionMock = Mockito.mock(HttpServletRequest.class);
Mockito.when(requestMock.getSession()).thenReturn(sessionMock);
processSelection(requestMock, <and your facets and selectedText here>)
//do some asserts/verifies here
}
推荐阅读
- python - Seaborn 线图对数刻度
- c - 信号量创建失败:文件存在
- javascript - 写入 NodeJs 缓冲区
- javascript - 为什么我的缩略图的 ytdl 信息是一个对象?
- typescript - 使用 TypeScript 在数组项中接口唯一值
- sql - 使用 timezoneoffse 表获取正确的偏移量
- c# - 已部署与本地:已部署的应用程序与使用 mysql 的本地应用程序中存储的数据是意外的
- android - 如何在 JobService 中调用 Activity Context 以获得权限?
- android - 如何在android中捕获的照片中添加时间戳
- javascript - JavaScript / Lit-element 安全的 HTML 解析方式