Jsf 2 如何在junit中使用OmniFaces
在我的测试方法中,我希望能够调用Jsf 2 如何在junit中使用OmniFaces,jsf-2,junit,mocking,mockito,omnifaces,Jsf 2,Junit,Mocking,Mockito,Omnifaces,在我的测试方法中,我希望能够调用Ajax.oncomplete,它在内部调用: OmniPartialViewContext.getCurrentInstance 请告知如何做。我已完成以下工作: 1-使用FacesContextMocker类: public abstract class FacesContextMocker extends FacesContext { private FacesContextMocker() { } private static
Ajax.oncomplete
,它在内部调用:
OmniPartialViewContext.getCurrentInstance
请告知如何做。我已完成以下工作: 1-使用FacesContextMocker类:
public abstract class FacesContextMocker extends FacesContext {
private FacesContextMocker() {
}
private static final Release RELEASE = new Release();
private static class Release implements Answer<Void> {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
setCurrentInstance(null);
return null;
}
}
public static FacesContext mockFacesContext() {
FacesContext context = Mockito.mock(FacesContext.class);
setCurrentInstance(context);
Mockito.doAnswer(RELEASE).when(context).release();
return context;
}
}
FacesContext facesContext = FacesContextMocker.mockFacesContext();
// mocking omnifaces OmniPartialViewContext to test Ajax.oncomplete
OmniPartialViewContext omniPartialViewContext = Mockito
.mock(OmniPartialViewContext.class);
Map<Object, Object> map = facesContext.getCurrentInstance()
.getAttributes();
map.put(OmniPartialViewContext.class.getName(), omniPartialViewContext);
Mockito.when(facesContext.getCurrentInstance().getAttributes())
.thenReturn(map);
公共抽象类FacesContextMocker扩展FacesContext{
私有FacesContextMocker(){
}
私有静态最终版本=新版本();
私有静态类发布实现了应答{
@凌驾
公共Void应答(invocationmock调用)抛出可丢弃的{
setCurrentInstance(空);
返回null;
}
}
公共静态FacesContext mockFacesContext(){
FacesContext context=Mockito.mock(FacesContext.class);
setCurrentInstance(上下文);
Mockito.doAnswer(RELEASE).when(context.RELEASE();
返回上下文;
}
}
2-模拟OmniPartialViewContext对象如下所示:
public abstract class FacesContextMocker extends FacesContext {
private FacesContextMocker() {
}
private static final Release RELEASE = new Release();
private static class Release implements Answer<Void> {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
setCurrentInstance(null);
return null;
}
}
public static FacesContext mockFacesContext() {
FacesContext context = Mockito.mock(FacesContext.class);
setCurrentInstance(context);
Mockito.doAnswer(RELEASE).when(context).release();
return context;
}
}
FacesContext facesContext = FacesContextMocker.mockFacesContext();
// mocking omnifaces OmniPartialViewContext to test Ajax.oncomplete
OmniPartialViewContext omniPartialViewContext = Mockito
.mock(OmniPartialViewContext.class);
Map<Object, Object> map = facesContext.getCurrentInstance()
.getAttributes();
map.put(OmniPartialViewContext.class.getName(), omniPartialViewContext);
Mockito.when(facesContext.getCurrentInstance().getAttributes())
.thenReturn(map);
FacesContext FacesContext=FacesContextMocker.mockFacesContext();
//模拟omnifaces OmniPartialViewContext以测试Ajax.oncomplete
OmniPartialViewContext OmniPartialViewContext=Mockito
.mock(OmniPartialViewContext.class);
Map Map=facesContext.getCurrentInstance()
.getAttributes();
map.put(OmniPartialViewContext.class.getName(),OmniPartialViewContext);
Mockito.when(facesContext.getCurrentInstance().getAttributes())
.然后返回(地图);
事实上,我正要发布一条评论,它只是存储为FacesContext
属性,键为OmniPartialViewContext.class.getName()
。