Hi Sarthak,
On 29 Oct 2017, at 18:48, Sarthak Gupta
<sarthakgupta072(a)gmail.com> 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