Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

How to set runmodes for the sling servlet unit test - Junit5?

EugeneF1
Level 1
Level 1

I'm using SlingSettingsService to get runmides in the sling servlet. 

 

Any idea how to set runmodes in the test file uisng Junit5 so the servlet could read them when you run doGet(req, res) test?

 

Thanks,

Eugene 

1 Accepted Solution
Ravi_Pampana
Correct answer by
Community Advisor
Community Advisor

Hi,

 

We can use below code to set the run modes

 

@Mock

private SlingSettingsService settingsService;

 

Register the service

context.registerService(SlingSettingsService.class, settingsService);

 

Then set the runmodes required for the test cases as below

 

        Set<String> runModes = new HashSet<>();

        runModes.add("author");

        when(settingsService.getRunModes()).thenReturn(runModes);

 

Hope this helps!

 

 

View solution in original post

3 Replies
Ravi_Pampana
Correct answer by
Community Advisor
Community Advisor

Hi,

 

We can use below code to set the run modes

 

@Mock

private SlingSettingsService settingsService;

 

Register the service

context.registerService(SlingSettingsService.class, settingsService);

 

Then set the runmodes required for the test cases as below

 

        Set<String> runModes = new HashSet<>();

        runModes.add("author");

        when(settingsService.getRunModes()).thenReturn(runModes);

 

Hope this helps!

 

 

View solution in original post

EugeneF1
Level 1
Level 1
Your code didn't work for me. I was getting Nullpointer on context.registerService(SlingSettingsService.class,settingsService);
EugeneF1
Level 1
Level 1

I've come up with the working solution 🙂

Runmodes are passed to the servlet. Here's the example:

 

private DataUpdate servlet;
@Mock
private MockSlingHttpServletRequest req;
@Mock
private SlingSettingsService settingsService;
@Mock
private SlingSettingsService settingsService;

@BeforeEach
void setUp() {
servlet = context.registerInjectActivateService(new DataUpdate());
}
@Test
void doGet() throws ServletException, IOException {
context.runMode("author");
req = context.request();
res = context.response();
servlet.doGet(req, res);
}