This marks the completion of this thread. My Sample test now works for a Named bean AND servlet using Faces Messages. Needed to leverage classes from package org.apache.myfaces.test.mock
Thanks for your help Gerhard. On Mon, Mar 20, 2017 at 8:28 PM, Stephen More <[email protected]> wrote: > I am now utilizing > org.apache.deltaspike.testcontrol.impl.jsf.MyFacesContainerAdapter > ( like os890 ) which allows me to add a facesMessage from within the Named > Bean and it is now testable. ( Hip Hip Horay ! ) > > The question now, how can I get that same org.apache.deltaspike.jsf. > impl.listener.request.DeltaSpikeFacesContextWrapper to show up when > testing my servlet ? > ( Same project: https://github.com/mores/maven-examples/tree/master/ > prime-deltaspike ) > > On Sat, Mar 18, 2017 at 6:45 PM, Gerhard Petracek <[email protected]> > wrote: > >> hi stephen, >> >> @BeanProvider: >> some people are using a dynamic lookup via #getContextualReference and >> some >> are using manual injection via #injectFields. >> you can find examples at [1]. >> >> you mainly have the issue due to using the mock-framework (see the answer >> i've sent some minutes ago). >> >> regards, >> gerhard >> >> [1] http://deltaspike.apache.org/documentation/core.html#BeanProvider >> >> >> >> 2017-02-28 18:26 GMT+01:00 Stephen More <[email protected]>: >> >> > Where can I find an example of using BeanProvider to test a servlet >> using >> > injection ? >> > >> > On Tue, Feb 28, 2017 at 12:10 PM, Gerhard Petracek < >> [email protected]> >> > wrote: >> > >> > > hi stephen, >> > > >> > > i guess people just used BeanProvider instead (if they needed to test >> > that >> > > part). >> > > >> > > regards, >> > > gerhard >> > > >> > > >> > > >> > > 2017-02-28 15:34 GMT+01:00 Stephen More <[email protected]>: >> > > >> > > > https://issues.apache.org/jira/browse/DELTASPIKE-1236 has been >> > created >> > > to >> > > > track this. >> > > > >> > > > On Tue, Feb 28, 2017 at 9:24 AM, Stephen More < >> [email protected]> >> > > > wrote: >> > > > >> > > > > Sure, I will file a jira ticket, now that I have confirmation that >> > this >> > > > is >> > > > > not supposed to work out of the box. >> > > > > >> > > > > I find it hard to believe I am the first person asking how to >> test a >> > > > > servlet that uses injection. >> > > > > >> > > > > On Tue, Feb 28, 2017 at 8:27 AM, Gerhard Petracek < >> > > [email protected]> >> > > > > wrote: >> > > > > >> > > > >> hi stephen, >> > > > >> >> > > > >> please file a jira-ticket for such an improvement. >> > > > >> >> > > > >> thx & regards, >> > > > >> gerhard >> > > > >> >> > > > >> >> > > > >> >> > > > >> 2017-02-28 13:38 GMT+01:00 Stephen More <[email protected] >> >: >> > > > >> >> > > > >> > The current - non working test code can be found here: >> > > > >> > https://github.com/mores/maven-examples/tree/master/ >> > > prime-deltaspike >> > > > >> > >> > > > >> > Servlet works as expected when deployed - output is survey >> says: >> > > 3.96 >> > > > ( >> > > > >> > https://github.com/mores/maven-examples/blob/master/ >> > > > >> > prime-deltaspike/src/main/java/org/test/MyServlet.java >> > > > >> > ) >> > > > >> > >> > > > >> > But when trying to run the test, windowContext appears to be >> > null. ( >> > > > >> > https://github.com/mores/maven-examples/blob/master/ >> > > > >> > prime-deltaspike/src/test/java/org/test/MyServletTest.java >> > > > >> > ) >> > > > >> > >> > > > >> > Any and all help is always appreciated. >> > > > >> > >> > > > >> > On Mon, Feb 27, 2017 at 9:55 PM, Stephen More < >> > > [email protected] >> > > > > >> > > > >> > wrote: >> > > > >> > >> > > > >> > > I have been using org.apache.deltaspike.testcont >> rol.api.junit. >> > > > >> > CdiTestRunner >> > > > >> > > to test JSF backing beans and everything seems to be working >> > well. >> > > > >> > > >> > > > >> > > >> > > > >> > > At this point I am struggling how to test a plain old servlet >> > that >> > > > >> uses >> > > > >> > > injection, are there any examples anywhere ? >> > > > >> > > >> > > > >> > > Here is what I currently have: >> > > > >> > > >> > > > >> > > @RunWith( CdiTestRunner.class ) >> > > > >> > > @TestControl( projectStage = org.apache.deltaspike.core. >> > > > >> > > api.projectstage.ProjectStage.UnitTest.class ) >> > > > >> > > public class MyServletTest >> > > > >> > > { >> > > > >> > > private static org.slf4j.Logger log = >> > > > org.slf4j.LoggerFactory. >> > > > >> > getLogger( >> > > > >> > > MyServletTest.class ); >> > > > >> > > >> > > > >> > > @Inject >> > > > >> > > private org.apache.deltaspike.core. >> > > > >> > spi.scope.window.WindowContext >> > > > >> > > windowContext; >> > > > >> > > >> > > > >> > > @Inject >> > > > >> > > private org.apache.deltaspike.cdise.ap >> i.ContextControl >> > > > >> > > contextControl; >> > > > >> > > >> > > > >> > > @InjectMocks >> > > > >> > > private MyServlet myServlet; >> > > > >> > > >> > > > >> > > @After >> > > > >> > > public void teardown() >> > > > >> > > { >> > > > >> > > contextControl.stopContext( >> > > > javax.enterprise.context. >> > > > >> > ConversationScoped.class >> > > > >> > > ); >> > > > >> > > } >> > > > >> > > >> > > > >> > > @Before >> > > > >> > > public void init() >> > > > >> > > { >> > > > >> > > org.mockito.MockitoAnnotations.initMocks( >> this >> > ); >> > > > >> > > >> > > > >> > > contextControl.startContext( >> > > > javax.enterprise.context. >> > > > >> > ConversationScoped.class >> > > > >> > > ); >> > > > >> > > windowContext.activateWindow( "testWindow" ); >> > > > >> > > } >> > > > >> > > >> > > > >> > > @Test >> > > > >> > > public void testFinancialEstimateReport() throws >> > Exception >> > > > >> > > { >> > > > >> > > javax.servlet.http.HttpServletRequest >> request = >> > > > >> > > org.mockito.Mockito.mock( javax.servlet.http. >> > > > HttpServletRequest.class >> > > > >> ); >> > > > >> > > javax.servlet.http.HttpServletResponse >> > response = >> > > > >> > > org.mockito.Mockito.mock( javax.servlet.http.HttpServlet >> > > > >> Response.class >> > > > >> > ); >> > > > >> > > >> > > > >> > > org.mockito.Mockito.when( >> > request.getServletPath() >> > > > >> > > ).thenReturn( "/this/path" ); >> > > > >> > > org.mockito.Mockito.when( >> request.getParameter( >> > > > "ID" ) >> > > > >> > > ).thenReturn( "1234" ); >> > > > >> > > org.mockito.Mockito.when( >> request.getParameter( >> > > > >> "format" >> > > > >> > ) >> > > > >> > > ).thenReturn( "PDF" ); >> > > > >> > > >> > > > >> > > myServlet.doGet( request, response ); >> > > > >> > > } >> > > > >> > > } >> > > > >> > > >> > > > >> > > But the @Inject is not happening inside of MyServlet...what >> is >> > > > needed >> > > > >> to >> > > > >> > > make this work ? >> > > > >> > > >> > > > >> > > -Thanks >> > > > >> > > >> > > > >> > > >> > > > >> > > >> > > > >> > >> > > > >> >> > > > > >> > > > > >> > > > >> > > >> > >> > >
