Pas de signature de la méthode: est applicable que pour les types d'argument d'erreur en Groovy
Je suis assez groovy et prise d'erreur suivant lors de l'exécution de la méthode ci-dessous. Je suis en train de passer nom du fichier xml et la Carte
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)
}
Consommateur.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()
}
Erreur:
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)
Après des recherches sur la question, il s'est avéré son à un problème commun. N'arrivais pas à savoir si. Parce que toutes les solutions sont subjective.
Juste curieux de savoir où je fais de mal
Grâce
C'est vraiment bizarre. Pouvez-vous essayer un moulage de la Chaîne ou de l'utilisation de la méthode
toString()
ou de l'utilisation des guillemets simples au lieu des guillemets et voir si cela fonctionne ? quelle est la version de Groovy utilisez-vous ?Groovy Version: 2.1.9 JVM: 1.7.0_45 Vendor: Oracle Corporation OS: Windows 7
J'ai essayé de devis unique et toString()
. Mais pas de chance
OriginalL'auteur SMPH | 2014-07-20
Vous devez vous connecter pour publier un commentaire.
currConvert
est une méthode d'instance, mais on l'appelle comme si c'était une méthode statique.@Delegate
ClassA.groovy
dansConsumer.groovy
et créé une instance avant l'exécution de lacurrConvert
. Serait-ce faire?Vous aurez toujours besoin de se débarrasser de la
Consumer.
, commecurrConvert
est une méthode d'instance.J'ai fait le changement de toujours obtenir
groovy.lang.MissingMethodException: No signature of method: RD.currConvert() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl, java.util.LinkedHashMap) values: [request/globe/CurrencyConvert.xml, [fromCurr:AUD, ...]]
Veuillez mettre à jour votre question et include tous informations nécessaires pour reproduire le problème. Par exemple, la question ne mentionne pas l'utilisation de
@Delegate
à tous. Il également ne pas montrer laConsumer
classe (même si c'est référencée dans le code), et les feuilles on se demande pourquoi le fichier est appeléClassA.groovy
plutôt queConsumer.groovy
.currConvert
est une méthode d'instance. Au lieu deConsumer.currConvert(...)
, ça doit être quelque chose commenew Consumer(someUrl).currConvert(...)
.OriginalL'auteur Peter Niederwieser
J'ai eu un problème semblable à ceci :
J'avais la même exception à printMessage(obj).
Il a obtenu fixe après le changement comme ceci :
OriginalL'auteur S'chn T'gai Spock