Re: Mock Osgi Services via Sling Mocks

2018-09-03 Thread Dominik Süß
Hi Stefan,

you're right I just thought too complicated trying to register via SCR.

The snippet below seems to work just fine:

 @Spy
 PackageRegistry registry = new FSPackageRegistry();
[...]
BundleContext bundleContext = MockOsgi.newBundleContext();
bundleContext.registerService(registry.getClass().getName(), registry,
null);

Cheers
Dominik

On Mon, Sep 3, 2018 at 2:45 PM Stefan Seifert 
wrote:

> hello dominik.
>
> do you have a small example project to show the problem?
> from what you describe this should be no problem with osgi mocks/sling
> mocks - but i do not get the exact problem you encounter.
>
> if you want to mock an OSGi services it's easiest to use somehing like
> mockito and register it in the mock context with the "registerService"
> method.
>
> stefan
>
> >-Original Message-
> >From: Dominik Süß [mailto:dominik.su...@gmail.com]
> >Sent: Monday, September 3, 2018 1:49 PM
> >To: users@sling.apache.org
> >Subject: Mock Osgi Services via Sling Mocks
> >
> >Hi everyone,
> >in my case I would like to register a mocked version of an osgi service -
> >in the past IIRC I could have scr metadata in a mock class under
> >src/test/java and just register this one.
> >
> >With the more recent osgi annotations to generate the scr metadata there
> is
> >an extra execution for scr generation as described in
> >http://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-
> >faq.html#use-scr-metadata-generated-by-bnd-in-unit-tests
> >
> >The problem: this will ignore classes in scr-metadata so I currently see
> no
> >way on how to mock an osgi service for a test case without creating an own
> >bundle with these mocks (along with the generated SCR metadata).
> >
> >Is there any way to programmatically inject a service and inject the
> >corresponding metadata?
> >
> >Cheers
> >Dominik
>


RE: Mock Osgi Services via Sling Mocks

2018-09-03 Thread Stefan Seifert
hello dominik.

do you have a small example project to show the problem?
from what you describe this should be no problem with osgi mocks/sling mocks - 
but i do not get the exact problem you encounter.

if you want to mock an OSGi services it's easiest to use somehing like mockito 
and register it in the mock context with the "registerService" method.

stefan

>-Original Message-
>From: Dominik Süß [mailto:dominik.su...@gmail.com]
>Sent: Monday, September 3, 2018 1:49 PM
>To: users@sling.apache.org
>Subject: Mock Osgi Services via Sling Mocks
>
>Hi everyone,
>in my case I would like to register a mocked version of an osgi service -
>in the past IIRC I could have scr metadata in a mock class under
>src/test/java and just register this one.
>
>With the more recent osgi annotations to generate the scr metadata there is
>an extra execution for scr generation as described in
>http://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-
>faq.html#use-scr-metadata-generated-by-bnd-in-unit-tests
>
>The problem: this will ignore classes in scr-metadata so I currently see no
>way on how to mock an osgi service for a test case without creating an own
>bundle with these mocks (along with the generated SCR metadata).
>
>Is there any way to programmatically inject a service and inject the
>corresponding metadata?
>
>Cheers
>Dominik