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

Reply via email to