我的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'中的方法(你应该假设它已经被开发团队正确地测试过了)。 –