Вы можете использовать, например, PowerMock , который является структурой, которая позволяет расширять библиотеки-макеты, например Mockito , с дополнительными возможностями В этом случае это позволяет вам высмеивать статические методы FacesContext
.
Используя метод Mockito verify()
, вы можете убедиться, что был вызван метод addMessage()
. Кроме того, вы можете использовать ArgumentCaptor
для извлечения FacesMessage
, переданного вызову метода addMessage()
на FacesContext
.
@Test
public void testToPage2NotChecked() {
// mock all static methods of FacesContext
PowerMockito.mockStatic(FacesContext.class);
FacesContext facesContext = mock(FacesContext.class);
when(FacesContext.getCurrentInstance()).thenReturn(facesContext);
NavigationBean navigationBean = new NavigationBean();
navigationBean.setCheck(false);
// check the returned value of the toPage2() method
assertEquals("", navigationBean.toPage2());
// create an ArgumentCaptor for the FacesMessage that will be added to
// the FacesContext
ArgumentCaptor<FacesMessage> facesMessageCaptor = ArgumentCaptor
.forClass(FacesMessage.class);
// verify if the call to addMessage() was made and capture the
// FacesMessage that was passed
verify(facesContext).addMessage(Mockito.anyString(),
facesMessageCaptor.capture());
// get the captured FacesMessage and check the set values
FacesMessage message = facesMessageCaptor.getValue();
assertEquals(FacesMessage.SEVERITY_INFO, message.getSeverity());
assertEquals("Sæt i kryds checkboxen", message.getSummary());
}
Я создал сообщение в блоге , в котором более подробно объясняется приведенный выше пример кода.