मैं परीक्षण सेटअप में निम्नलिखित है:मैं ग्रोवी में एक नकली स्थैतिक विधि कैसे रीसेट करूं?
def originalPostAsXml = RestClient.&postAsXml
RestClient.metaClass.'static'.postAsXml = {
String uriPath, String xml ->
return 65536
}
और परीक्षण की सफाई में:
RestClient.metaClass.'static'.postAsXml = originalPostAsXml
लेकिन जब अगले परीक्षण रन, जब यह RestClient.postAsXml पर अमल करने की कोशिश करता है, इसे में चलाता है एक StackOverflowError:
at groovy.lang.Closure.call(Closure.java:282)
ऐसा लगता है कि RestClient.postAsXml रिकर्सिवली खुद को इंगित करता है। एक मॉक-आउट स्थैतिक विधि को रीसेट करने का सही तरीका क्या है? विधि रीसेट करने के लिए
def originalPostAsXml = RestClient.metaClass.getMetaMethod('postAsXml', [String, String] as Class[])
तो:
यहाँ पिछले एक समान सवाल है: http://stackoverflow.com/questions/920582/how-to-change-behaviour-of-the-methed-in-groovy-using -थैट-विधि-इन-मेटाक्लास – schmolly159
आप मेटाक्लास को रीसेट कर सकते हैं - इस प्रश्न को देखें जिसका जवाब है http://stackoverflow.com/questions/1612569/how-do-i-undo-meta-class-changes-after-executing -groovyshell –