I have the below snippet of code from service class for which i am trying to write a JUnit testcase.
I wanted to stub my NodeIterator, I have tried different approaches to do it but it never returns the mockobject, instead always returns the actual object, am I missing something here ?
The Size of the Node Iterator is always 0 too.
Snippet from Service Class:
Session session = userResourceResolver.adaptTo(Session.class);
QueryManager queryManager = session.getWorkspace().getQueryManager();
Query query = queryManager.createQuery(statement, Query.JCR_SQL2);
QueryResult queryResult = query.execute();
NodeIterator nodeIter = queryResult.getNodes();
LOG.debug("size is {}", nodeIter.getSize());
nodeIter.forEachRemaining((item) -> {
getUserNodeProperties(excludedGroups, userResourceResolver, session, item);
});
Approaches done so far for Testcases to mock the NodeIterator in Junit5:
Approach 1:
lenient().when(mockResourceResolverFactory.getResourceResolver(anyMap())).thenReturn(mockResourceResolver);
lenient().when(mockResourceResolver.adaptTo(Session.class)).thenReturn(mockSession);
lenient().when(mockSession.getWorkspace()).thenReturn(mockWorkspace);
lenient().when(mockWorkspace.getQueryManager()).thenReturn(mockQuerymanager);
lenient().when(mockQuerymanager.createQuery("dummy", Query.JCR_SQL2)).thenReturn(mockQuery);
lenient().when(mockQuery.execute()).thenReturn(mockresult);
lenient().when(mockresult.getNodes()).thenReturn(mockNodeItr); lenient().when(mockNodeItr.hasNext()).thenReturn(true).thenReturn(true).thenReturn(false); lenient().when(mockNodeItr.nextNode()).thenReturn(userOneNode).thenReturn(userTwoNode).thenReturn(null);
Approach 2:
doReturn(mockNodeItr).when(mockresult).getNodes();
doReturn(true,true,false).when(mockNodeItr).hasNext();
doReturn(userOneNode,userTwoNode,null).when(mockNodeItr).next();
Is there any other way to mock it ? Am I missing something in here, please let me know
Thanks.
@arunpatidar @VeenaVikraman @Albin_Issac
Thank you.
Solved! Go to Solution.
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Total Likes
Could you please check
https://github.com/dplaton/test-aem-mocks/blob/master/src/test/java/com/day/cq/testing/SomeTest.java
Could you please check
https://github.com/dplaton/test-aem-mocks/blob/master/src/test/java/com/day/cq/testing/SomeTest.java
Thanks a lot for these samples. Helped me resolve the issue.
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies