2013-07-27 1 views
2

в моем методе испытаний я хочу, чтобы иметь возможность вызывать Ajax.oncomplete, которые внутренне совершать звонки на:Как использовать OmniFaces в JUnit

OmniPartialViewContext.getCurrentInstance 

пожалуйста, посоветуйте, как сделать это.

ответ

2

я достиг, что следующим образом:

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; 
    } 
} 

2- OmniPartialViewContext макет объекта следующим образом:

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); 
+0

В самом деле, я собирался опубликовать комментарий, что он просто хранится как атрибут FacesContext' с именем «OmniPartialViewCo» ntext.class.getName() 'как ключ. – BalusC

+0

@BalusC, спасибо за ваш обычный интерес: D –

 Смежные вопросы

  • Нет связанных вопросов^_^