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