JSF アプリの wirint テストケースに問題があります。だから私はログアウト方法をテストしたい:
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";
}
私の問題は、ここで nullpointer 例外が発生したことです: EasyMock.expectLastCall().once() どのように適切にテストする必要がありますか? モックに問題があると思いますが、解決策を見つけることができませんでした。この場合、FacesContext を適切にモックするにはどうすればよいですか