0 Replies Latest reply on Feb 12, 2010 9:30 AM by Bogdan Marian

    Mocking a Seam component used by a web service

    Bogdan Marian Newbie


      I am using Seam 2.0.2.SP1, JBoss AS 4.2.2 GA and TestNG 5.8.

      I am trying to test a web service (Seam component) implemented as a stateless session bean using TestNG. The test class inherits SeamTest and the test method uses a FacesRequest in order to call the WS.

      I want to mock an application-scoped Seam component deployed in the same package as the WS.
      I have tried to use the @Install and setting the precedence to Install.MOCK on a Seam component from the test package. This mock component inherits the Seam component I want to mock, as described in the Seam Reference 2.1.1 GA, section 35.2.1 - they have the same name and scope. The mock is not deployed on JBoss AS. Running a basic Seam test, I can see that the mock is returned after a Component.getInstance(...) instead of the regular component. So far, so good.

      My problem is that when debugging the WS during my tests, I see that my mock is nowhere present - the real Seam component is always injected, though I would expect to see the mock injected. I believe that there are 2 application contexts: one activated inside the Seam application deployed on JBoss AS and another one activated inside the embedded JBoss AS started by SeamTest, so my mock is only registered as a Seam component inside the second application context (I'm not very sure I got the right reason).

      My question is how can I mock the component used by the WS ?
      I appreciate any help.

      Thank you very much.