Пересмешивание нескольких объектов в Groovy - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь смоделировать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...