deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John D. Ament" <john.d.am...@gmail.com>
Subject Re: Example unit testing a servlet that uses injection
Date Tue, 28 Feb 2017 13:55:45 GMT
Stephen,

I suspect the failure is because of the use of mockito.  We provide some
mocking support OOTB, would that help?

http://deltaspike.apache.org/documentation/test-control.html#MockFrameworks

John

On Tue, Feb 28, 2017 at 7:38 AM Stephen More <stephen.more@gmail.com> wrote:

> 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 <stephen.more@gmail.com>
> wrote:
>
> > I have been using
> org.apache.deltaspike.testcontrol.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.api.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.HttpServletResponse.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
> >
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message