Я пытаюсь смоделировать 2 объекта в моем классе.
class MystPipeline {
String name
String stream
String stage
MystServer server
MystJsonParser parser
MystPipeline(String name, String stream, String stage) {
this.name = name
this.stream = stream
this.stage = stage
server = new MystServer()
parser = new MystJsonParser()
}
def getPipelineId() throws InvalidPipelineException {
def pipelines = server.getPipelineJson()
def pipelineId = parser.getPipelineId(pipelines, name)
return pipelineId
}
}
Мой тестовый класс выглядит следующим образом:
import groovy.json.JsonSlurperClassic
import groovy.mock.interceptor.StubFor
class MystPipelineTest extends GroovyTestCase {
void testGetPipelineCallsMyst() {
def stub = new StubFor(MystServer)
stub.demand.with {
getPipelineJson {
return new JsonSlurperClassic().parse(this.getClass().getResource("/pipeline.json"))
}
}
stub.use {
def pipeline = new MystPipeline('BBT', 'ABC', 'DEF')
def pipelineId = pipeline.getPipelineId()
}
stub.expect.verify()
}
void testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson() {
def serverStub = new StubFor(MystServer)
def parserStub = new StubFor(MystJsonParser)
serverStub.demand.getPipelineJson { return new JsonSlurperClassic().parse(this.getClass().getResource("/pipeline.json")) }
parserStub.demand.getPipelineId { return "401073b6-e244-426d-83f2-e85f749e4fde" }
parserStub.use {
serverStub.use {
def pipeline = new MystPipeline('BBT','ABC', 'DEF')
def pipelineId = pipeline.getPipelineId()
assert pipelineId == '401073b6-e244-426d-83f2-e85f749e4fde'
}
}
}
}
Однако, когда я запускаю тесты, я получаю следующую ошибку:
groovy.lang.MissingMethodException: No signature of method: com.atradius.MystPipelineTest$_testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson_closure4.call() is applicable for argument types: (HashMap, String) values: [[data:[[disablePreValidations:false, streams:[5653f98d-797f-408e-aa8b-59848a8709e7:[...], ...], ...], ...], ...], ...]
Possible solutions: doCall(), any(), any(), find(), grep(), collect()
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:255)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:821)
at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:43)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:52)
at groovy.mock.interceptor.MockInterceptor.beforeInvoke(MockInterceptor.groovy:33)
at groovy.mock.interceptor.MockProxyMetaClass.invokeMethod(MockProxyMetaClass.java:84)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:37)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at com.atradius.MystJsonParser$getPipelineId.call(Unknown Source)
at com.atradius.MystPipeline.getPipelineId(MystPipeline.groovy:21)
at com.atradius.MystPipeline$getPipelineId.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
at com.atradius.MystPipelineTest$_testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson_closure5$_closure7.doCall(MystPipelineTest.groovy:31)
at com.atradius.MystPipelineTest$_testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson_closure5$_closure7.doCall(MystPipelineTest.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.Closure.call(Closure.java:405)
at groovy.lang.Closure.call(Closure.java:399)
at groovy.lang.ProxyMetaClass.use(ProxyMetaClass.java:74)
at groovy.lang.ProxyMetaClass$use.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at groovy.lang.ProxyMetaClass$use.call(Unknown Source)
at groovy.mock.interceptor.StubFor.use(StubFor.groovy:93)
at groovy.mock.interceptor.StubFor$use.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at com.atradius.MystPipelineTest$_testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson_closure5.doCall(MystPipelineTest.groovy:29)
at com.atradius.MystPipelineTest$_testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson_closure5.doCall(MystPipelineTest.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.Closure.call(Closure.java:405)
at groovy.lang.Closure.call(Closure.java:399)
at groovy.lang.ProxyMetaClass.use(ProxyMetaClass.java:74)
at groovy.lang.ProxyMetaClass$use.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at groovy.lang.ProxyMetaClass$use.call(Unknown Source)
at groovy.mock.interceptor.StubFor.use(StubFor.groovy:93)
at groovy.mock.interceptor.StubFor$use.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at com.atradius.MystPipelineTest.testGetPipelineIdReturnsPipelineIdWhenCalledWithValidPipelineJson(MystPipelineTest.groovy:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Process finished with exit code 255