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