Expand my Community achievements bar.

SOLVED

Adapt resource to Page int unit test

Avatar

Level 2

Hi everyone, I am having problems to test Pages in my unit tests. I have the following code:

Resource resource = context.load().json(PAGE_PATH + JSON_EXT, PAGE_PATH);

Page page = resource.adaptTo(Page.class);

The answer of adapTo is always null.

I am working with SlingMocks, and this is my resource

public final SlingContext context = new SlingContext();

There is a option to do this? I know its possible with wcm.io​ but I don't want to include that just for this kind of tests.

Thanks in advance.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Dear Jora,

Sling does not know about AEM WCM Page Api, therefore, it won't handle it OOTB. Of course you can wring your custom logic to Sling Mock's it how to handle Page API, but then you are re-implementing wcm.io.


Regards,Peter

View solution in original post

5 Replies

Avatar

Community Advisor

Dear Jora,

Have you looked at [1]

[1] Usage | AEM Mocks :

public class ExampleTest {

  @Rule

  public final AemContext context = new AemContext();

  @Test

  public void testSomething() {

  Resource resource = context.resourceResolver().getResource("/content/sample/en");

  Page page = resource.adaptTo(Page.class);

  // further testing

  }

}

shows basic dummy example [2]

[2] GitHub - xuanuy/mock-testing

Regards,

Peter

Avatar

Level 2

Thanks for the answer Peter.

Yes, I already saw that, but I'm wondering if this is possible without wcm.io (that's where it comes from AemContext), now I just use Apache Sling Mocks. I'm looking for solutions using just this dependency, and if is not possible I will jump to the other one.

Avatar

Correct answer by
Community Advisor

Dear Jora,

Sling does not know about AEM WCM Page Api, therefore, it won't handle it OOTB. Of course you can wring your custom logic to Sling Mock's it how to handle Page API, but then you are re-implementing wcm.io.


Regards,Peter

Avatar

Community Advisor

There should not be too much risk(check with your penetration security team before adding any dependency) adding wcm.io, if you declare it as <scope>test</scope> time dependency in maven. It's only initialised for testing then.

Regards,

Peter

Avatar

Level 2

Thanks Peter! I will look whats its the more convenient solution for us.