Hi Mats,

> I then have a subclass with the JUnit 4 test:
> 
> public class GamesLauncherTest extends AbstractPageTest {
> 
>     @ForComponents @Mock
>     private XyzManager xyzManager;
> 
>     @Mock
>     private XyzConfig xyzConfig;
> 
> 
> What I get is runtime exceptions, such as this:
> 
> Caused by: java.lang.RuntimeException: Service id 'xyzConfig' is
> not defined by any module.  Defined services: AccessDecisionManager,
> ... VirtualAssetStreamer.

Something is trying to look up a service with id "xyzConfig" - using that 
id. I assume you have something like this in your page:

   @Inject
   @Service("xyzConfig")
   private XyzConfig config;

If that's true then it might simply be that you haven't got a 
@ForComponents annotation on your xyzConfig mock. Also, if you name the 
service (using the @Service annotation) then you need to name it in the 
@ForComponents too:

public class GamesLauncherTest extends AbstractPageTest {

    @ForComponents @Mock
    private XyzManager xyzManager;
 
    @ForComponents("xyzConfig") @Mock
    private XyzConfig xyzConfig;


> We define our services in spring XML files, and @Inject them into our
> pages, and this worries me quite a bit, since I can't see any examples
> where Spring XML wiring has been mocked.

If you are faking/mocking the services then there's no problem. However, 
Testify and Tapestry's PageTester don't work with the tapestry-spring 
integration so you can't rely on the real spring services for (for 
example) integration tests.

- Paul




---

This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient (or have received this e-mail in error) please 
notify the sender immediately and delete this e-mail. Any unauthorized copying, 
disclosure or distribution of the material in this e-mail is strictly forbidden.

Please refer to http://www.db.com/en/content/eu_disclosures.htm for additional 
EU corporate and regulatory disclosures.

Reply via email to