I am using gMock for groovy to create unit tests. I have a base class which contains an ArrayList of "Players" I have another class that works as my GUI interface. A method in that user interface will take the list of Players and display the players names in a combobox. The method looks like this:
def displayGuild(){
guildList = new JList(g.guild.collect(){ obj -> obj.getName()})
}
The problem I'm having is trying to set the expectation and return values for this method what I have is something like this:
...
def playerList = getGuildList()
mockGame.setGuildList(playerList).returns(playerList)
mockGame.guild.returns(mockList).times(2)
mockList.isEmpty().returns(false)
mockList.collect().returns(playerList.collect(){obj -> obj.getName()})
festSetUp(panel.gPane.mainM)
play{
panel.g.setGuildList(playerList)
robot.keyPress(VK_A)
robot.keyRelease(VK_A)
assertThat (panel.gPane.addCharacter.isVisible(), is(true))
}
When I run the test I get a decent sized stacktrace but I'm not sure how to address it because it looks like the problem is with the closure.
My abbreviated stacktrace is this:
Exception in thread "AWT-EventQueue-0" junit.framework.AssertionFailedError: Unexpected method call 'collect(buchwalter.oldschoolgame.panels.MainMenuPanel$_displayGuild_closure2@4f2f2008)' on 'Mock for ArrayList'
'setGuildList([buchwalter.oldschoolgame.characters.Fighter@501b7924, buchwalter.oldschoolgame.characters.Barbarian@3bae5392])' on 'Mock for Game': expected 1, actual 1
'guild' on 'Mock for Game': expected 2, actual 2
'isEmpty()' on 'Mock for ArrayList': expected 1, actual 1
'collect()' on 'Mock for ArrayList': expected 1, actual 0
at junit.framework.Assert.fail(Assert.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrap.invoke(StaticMetaMethodSite.java:130)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at org.gmock.internal.InternalMockController.fail(InternalMockController.groovy:171)
at org.gmock.internal.InternalMockController$fail.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at org.gmock.internal.metaclass.MetaClassHelper.findExpectation(MetaClassHelper.groovy:25)
at org.gmock.internal.metaclass.MetaClassHelper$findExpectation.callStatic(Unknown Source)
at org.gmock.internal.MockInternal.invokeMockMethod(MockInternal.groovy:84)
at org.gmock.internal.metaclass.MockProxyMetaClass$2.call(MockProxyMetaClass.java:51)
at org.gmock.internal.Callable$call.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.gmock.internal.Callable$call.call(Unknown Source)
at org.gmock.internal.InternalMockController.doWork(InternalMockController.groovy:204)
at org.gmock.internal.InternalMockController.this$2$doWork(InternalMockController.groovy)
at org.gmock.internal.InternalMockController$this$2$doWork.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.gmock.internal.InternalMockController$this$2$doWork.callCurrent(Unknown Source)
at org.gmock.internal.InternalMockController.doInternal(InternalMockController.groovy:193)
at org.gmock.internal.InternalMockController$doInternal.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.gmock.internal.InternalMockController$doInternal.callCurrent(Unknown Source)
at org.gmock.internal.InternalMockController.doInternal(InternalMockController.groovy:186)
at org.gmock.internal.metaclass.MockProxyMetaClass.invokeMethod(MockProxyMetaClass.java:45)
at org.gmock.internal.metaclass.MockProxyMetaClass.invokeMethod(MockProxyMetaClass.java:40)
at org.gmock.internal.metaclass.GeneratedMockProxyMetaClass.invokeMethod(GeneratedMockProxyMetaClass.java:37)
Any Help would be appreciated