Hi Sarthak, > On 29 Oct 2017, at 18:48, Sarthak Gupta <[email protected]> wrote: > > Hello, > I have a component implementation GlossaryTransformation.java > <https://github.com/xwiki-contrib/application-glossary/blob/master/application-glossary-api/src/main/java/org/xwiki/contrib/glossary/internal/GlossaryTransformation.java>. > So it has two methods List<String> getGlossaryEntries() and transform(Block > block, TransformationContext context) in it.
I’ve added some review of the code in GitHub. > So, I > > have a test file https://pastebin.com/NixuBMjD for this component. Here I > am trying to mock the behavior of > getGlossaryEntries > > method > by putting strings ("glossaryEntry1" and "glossaryEntry2"). And then > implementing > "when(this.glossaryTransformation.getGlossaryEntries()).thenReturn(mockArrayList);" > but this line somehow shows NullPointerException. > > On searching on StackOverflow, I found that this is happening because the > object of "glossaryTransfromation" is not created, but only a reference is > created. So, I tried to put glosaaryTransformation = > "mock(GlossaryTransformation.class)" in the code. Yes, the above error was > resolved, but the line "Parser parser = > this.mocker.getInstance(Parser.class, "xwiki/2.1");" gave an error " > ComponentLookupException: Can't find descriptor for the component [role = > [interface org.xwiki.rendering.parser.Parser] hint = [xwiki/2.1]]" > . > > Is there a better way to achieve this? Or I think a better approach can be > to put the Query method (getGlossaryEntries) of GlossarryTranformation.java > in a separate class and then create a mock object for that class and then > run the test? Could you commit your test file and I can have a look? It’s hard to send review comments on pastebin :) I know I told you to only commit working stuff but here that’s the simplest to help you out. Note: You should not mock getGlossaryEntries(). Instead you should mock the QueryManager result. Thanks -Vincent > > Thanks > -Sarthak Gupta

