我的JSF應用程序的wirint測試用例存在一些問題。所以我想測試我的註銷方法:JSF - JUnit FacesContext模擬測試
FacesContext context = EasyMock.createMock(FacesContext.class);
String userName = "testUserName";
HttpSession session = EasyMock.createMock(HttpSession.class);
ExternalContext ext = EasyMock.createMock(ExternalContext.class);
EasyMock.expect(ext.getSession(true)).andReturn(session);
EasyMock.expect(context.getExternalContext()).andReturn(ext).times(2);
context.getExternalContext().invalidateSession();
EasyMock.expectLastCall().once();
EasyMock.replay(context);
EasyMock.replay(ext);
EasyMock.replay(session);
loginForm = new LoginForm();
loginForm.setUserName(userName);
String expected = "login";
String actual = loginForm.logout();
context.release();
Assert.assertEquals(expected, actual);
EasyMock.verify(context);
EasyMock.verify(ext);
EasyMock.verify(session);
我註銷的方法是:
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "/authentication/login.xhtml?faces-redirect=true";
}
我的問題是,我得到一個空指針異常此: EasyMock.expectLastCall()一次() 應該如何進行適當的測試?我想這是一些與嘲笑,但我不能找到一個解決方案,我怎麼能正確地嘲笑的FacesContext在這種情況下
爲什麼要測試'logout()'?它沒有邏輯,它只使用'javax.faces'中的方法(你應該假設它已經被開發團隊正確地測試過了)。 –