[ 
https://issues.apache.org/jira/browse/DELTASPIKE-1236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15891479#comment-15891479
 ] 

John D. Ament commented on DELTASPIKE-1236:
-------------------------------------------

[~mores] not sure if you saw my messages on the mailing list, so anyways I'll 
post a complete response.  The problem is that you're mixing mockito and 
deltaspike.  When I change your test class to be:

{code:java}
@RunWith(CdiTestRunner.class)
public class MyServletTest {

        @Inject
        private org.apache.deltaspike.core.spi.scope.window.WindowContext 
windowContext;

        @Inject
        private org.apache.deltaspike.cdise.api.ContextControl contextControl;

        @Inject
        private MyServlet myServlet;

        @After
        public void teardown() {
                contextControl
                                
.stopContext(javax.enterprise.context.ConversationScoped.class);
        }

        @Before
        public void init() {
                contextControl
                                
.startContext(javax.enterprise.context.ConversationScoped.class);
                windowContext.activateWindow("testWindow");
        }

        @Test
        public void testServlet() 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);
        }
}
{code}

It passes fine.  But note, you can't mix the two.  If you need to do mocking, 
you would use our MockManager so that its still handled as a CDI injection 
point - 
http://deltaspike.apache.org/documentation/test-control.html#MockFrameworks

Using the mocks for request/response should be perfectly fine for your use 
case, but you can't expect @Inject and mockito to work together.

> unit testing a servlet that uses injection
> ------------------------------------------
>
>                 Key: DELTASPIKE-1236
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1236
>             Project: DeltaSpike
>          Issue Type: Improvement
>    Affects Versions: 1.7.2
>         Environment: Tomcat
>            Reporter: Stephen More
>
> 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 ?
> 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
>  )



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to