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