加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

没有方法签名:适用于Groovy中的参数类型错误

发布时间:2020-12-14 16:30:02 所属栏目:大数据 来源:网络整理
导读:在运行以下方法时,我对groovy很新,并且遇到以下错误.我正在尝试传递xml文件名和Map RD.groovy Given(~'^input currency "([^"]*)"$') { String baseCurr - fromCurr = baseCurr}When(~'^insert end Currency "([^"]*)"$') { String tragetCurr - toCurr = tr
在运行以下方法时,我对groovy很新,并且遇到以下错误.我正在尝试传递xml文件名和Map

RD.groovy

Given(~'^input currency "([^"]*)"$') { String baseCurr ->
     fromCurr = baseCurr
}
When(~'^insert end Currency "([^"]*)"$') { String tragetCurr ->
     toCurr = tragetCurr
}


Then(~'^get the expected end currency value "([^"]*)"$') { String result ->

    assert result == currCon(fromCurr,toCurr)


}

private currCon(fromCurr,toCurr)
{

    def binding = ["fromCurr": fromCurr,"toCurr": toCurr]
    response = Consumer.currConvert("request/CurrencyConvert.xml",binding)    --> This is line 119

    assert 200 == response.status
    return response.data.ConversionRateResult.toString()
}

ClassA.groovy

package abc.api.member

import abc.util.Log
import abc.util.TemplateUtil
import groovyx.net.http.ContentType
import abc.api.RestClient


class ClassA extends ClassB{

    ClassA(RestClient restClient) {
        super(restClient)
    }

def currConvert(String xmlFilename,Map binding) {

        return currencyConvertRequest(TemplateUtil.xmlFromTemplate(xmlFilename,binding))

    }

def currencyConvertRequest(xmlString) {

        def params = [path : 'CurrencyConvertor.asmx',headers: globeHeaders(),body: xmlString]
        return restClient.post(params)
    }

Consumer.Groovy

package abc.api.member

import geb.Browser
import org.apache.http.client.utils.URIBuilder
import abc.api.RestClient
import abc.browser.member.Admin


class Consumer {
    Browser browser
    String token
    String userId

    @Delegate
    private ClassA classA

 Consumer(url) {
        browser = new Browser()
        browser.baseUrl = baseUrl(url)
        restClient = new RestClient(url)

        classA =  new ClassA(restClient)    
    }

private baseUrl(url) {
        URI uri = URI.create(url)
        URIBuilder builder = new URIBuilder()
        URI result =builder.setHost(uri.host). //
                setPath(uri.path). //
                setPort(uri.port). //
                setScheme(uri.scheme). 
                setUserInfo("Cons","pbiCons").build()

        return result.toURL().toString()
    }

错误:

groovy.lang.MissingMethodException: No signature of method: abc.api.consumer.Consumer.currConvert() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl,java.util.LinkedHashMap) values: [request/globe/CurrencyConvert.xml,[fromCurr:AUD,...]]
            at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
            at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:51)
            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 RD.currCon(RD.groovy:119)

在搜索问题后,结果证明这是一个常见问题.虽然想不出来.因为所有解决方案都是主观的.

只是好奇我做错了

谢谢

解决方法

currConvert是一个实例方法,但它被调用就好像它是一个静态方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读