代码之家  ›  专栏  ›  技术社区  ›  Angelina

Groovy-向闭包添加缺少的方法

  •  0
  • Angelina  · 技术社区  · 6 年前

    我想嘲笑你 dockerImage.inside() 呼叫 但我有以下错误。我什么都试过了,但没法补充 inside() :

    groovy.lang.MissingMethodException: No signature of method: java.lang.String.inside() is applicable for argument types: (String, com.dsl.shared.CustomService$_createMethod_closure15$_closure27) values: [-u root, com.dsl.shared.CustomService$_createMethod_closure15$_closure27@4248ed58]
    Possible solutions: size(), size(), intern(), inspect(), find()
    at com.dsl.shared.CustomService$_createMethod_closure15.doCall(CustomService.groovy:677)
    

    BuildContentMock。棒极了

    class BuildContextMock {
        String commandCalled
        class dockerMock {
            def image(def imageName){
                return imageName
            }
        }
    
        dockerMock docker = new dockerMock()
        def sh(String command) {
            commandCalled = command
        }
    
        def usernamePassword(Map inputs) {
            inputs
        }
    
        def string(Map inputs) {
            inputs
        }
    
        def withCredentials(List args, Closure closure) {
            def delegate = [:]
            for (arg in args) {
                delegate[arg.get('usernameVariable')] = 'the_username'
                delegate[arg.get('passwordVariable')] = 'the_password'
                delegate[arg.get('variable')] = 'the_apikey'
            }
            closure.delegate = delegate
            closure()
        }
    }
    

    定制服务测试。棒极了

    class CustomServiceTest {
        @Test
        void testCreateMaintenanceWindow() {
            def buildContextMock = new BuildContextMock()
            def mockForBuildInfo = new MockFor(BuildInfo)
            def mockBuildInfo = mockForBuildInfo.proxyInstance()
    
            AEMBuildHelper aemBuildHelper = new AEMBuildHelper(buildContextMock, "artifactory", mockBuildInfo)
            CustomService customService = aemBuildHelper.customService      
            String id = customService.createMethod()
            assert id !== null
        }
    }
    

    海关服务。棒极了

    class CustomService extends BuildHelper {
        String createMaintenanceWindow(){            
           buildContext.withCredentials(
              [buildContext.string(credentialsId: 
                  ApiKey, variable:'ApiKey')]){ 
               this.dockerBuildHelper.getDockerImage(       
                   this.dockerBuildHelper.getWdBuildDockerImageName())
                      .inside('-u root'){       
                   return sh(script: "test", returnStdout: true).trim()
               }
           }
        }
    }
    

    建筑助手。棒极了

     class BuildHelper extends ContextHolder implements Serializable {    
        protected def mavenBuildHelper = null    
        BuildHelper(buildContext, mavenBuildHelper) {
           super(buildContext)
           this.mavenBuildHelper = mavenBuildHelper
        }
    
        BuildHelper(buildContext, credentialId, buildContainerEntryPointCommand) {
           super(buildContext)
           this.mavenBuildHelper = new MavenBuildHelper(buildContext, credentialId, buildContainerEntryPointCommand)
        }
     }
    

    DockerBuild助手。棒极了

    class DockerBuildHelper extends BuildHelper {    
        DockerBuildHelper(buildContext, mavenBuildHelper, credentialsID = null) {
            super(buildContext, mavenBuildHelper)
            this.artifactoryCredentialsId = credentialsID
        }
        String getWdBuildDockerImageName() {
            return wdBuildDockerImageName
        }
        String getDockerImage(String imageName) {
            return buildContext.docker.image(imageName)
        }
    }
    
    0 回复  |  直到 6 年前