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