I am trying to create a JUNIT for my sling model class. I am following - https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-wknd-tutorial-develop/project-archetype/unit-testing.html?lang=en. As per this doc I am using AemContext to load the json file but I get Null when I try to read values.
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import io.wcm.testing.mock.aem.junit5.AemContext;
import io.wcm.testing.mock.aem.junit5.AemContextExtension;
@ExtendWith({ AemContextExtension.class, MockitoExtension.class })
public class FeatureListModelTest {
// private final AemContext ctx = new AemContext();
private final AemContext aemContext = AppAemContext.newAemContext();
FeatureListModel featureModel;
@BeforeEach
void setUp() {
aemContext.addModelsForClasses(FeatureListModel.class);
aemContext.load().json("/content/mywebsite/en/featurelist.json", "/featurelistComponent");
aemContext.currentResource("/featurelistComponent/featureList");
featureModel = aemContext.request().adaptTo(FeatureListModel.class); // This featureModel returning NULL
}
@Test
void getFeatureTitle() {
final String expected = "Hello";
assertEquals(expected, featureModel.getFeatureTitle());
}
}
Here is my json that is placed in resource path
{
"featureList": {
"jcr:primaryType": "cq:PageContent",
"jcr:createdBy": "admin",
"jcr:title": "feature",
"jcr:created": "Tue Jun 01 2023 21:26:54 GMT+0530",
"changeFrequency": "always",
"cq:lastModified": "Tue Jun 06 2023 22:28:27 GMT+0530",
"featureTitle": "Hello",
"sling:resourceType": "mywebsite/components/structure/base-page",
"cq:lastModifiedBy": "admin"
}
}
It seems everything correct but I am not sure why I am getting Null value in modelobject.