Solved
How to mock context configuration class
HI,
I am trying to write Junit for a java class which has context aware configuration code something like below:
Main class logic:
ConfigurationBuilder configBuilder =resource.adaptTo(ConfigurationBuilder.class);
SimpleConfig simpleConfig = configBuilder.name("feature").as(SimpleConfig.class);
but smipleConfig value is showing as "null" when I debug it in Junit.
Junit class logic, what I am trying to do:
package org.apache.sling.testing.mock.caconfig;
import static org.apache.sling.testing.mock.caconfig.ContextPlugins.CACONFIG;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.caconfig.ConfigurationBuilder;
import org.apache.sling.testing.mock.caconfig.example.SimpleConfig;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@SuppressWarnings("null")
public class ContextPluginsTest {
private static final String CONFIG_NAME = "testConfig";
@Rule
public SlingContext context = new SlingContextBuilder()
.plugin(CACONFIG)
.build();
private Resource contextResource;
@Before
public void setUp() {
context.create().resource("/content/site1", "sling:configRef", "/conf/site1");
contextResource = context.create().resource("/content/site1/page1");
// register configuration annotation class
MockContextAwareConfig.registerAnnotationClasses(context, SimpleConfig.class);
// write config
MockContextAwareConfig.writeConfiguration(context, contextResource.getPath(), SimpleConfig.class,
"stringParam", "value1",
"intParam", 123,
"boolParam", true);
}
}
