Tôi có sau trong thiết lập thử nghiệm:Làm cách nào để đặt lại phương thức tĩnh giả trong Groovy?
def originalPostAsXml = RestClient.&postAsXml
RestClient.metaClass.'static'.postAsXml = {
String uriPath, String xml ->
return 65536
}
và trong dọn dẹp kiểm tra:
RestClient.metaClass.'static'.postAsXml = originalPostAsXml
Nhưng khi chạy thử nghiệm tiếp theo, khi nó cố gắng để thực hiện RestClient.postAsXml, nó chạy vào một StackOverflowError:
at groovy.lang.Closure.call(Closure.java:282)
Dường như RestClient.postAsXml đệ quy trỏ tới chính nó. Cách đúng để thiết lập lại một phương thức tĩnh giả lập là gì? gợi ý
Dưới đây là một câu hỏi tương tự theo thời gian: http://stackoverflow.com/questions/920582/how-to-change-behaviour-of-the-methed-in-groovy-using -that-method-in-metaclass – schmolly159
Bạn có thể đặt lại metaclass - Xem câu hỏi này có câu trả lời http://stackoverflow.com/questions/1612569/how-do-i-undo-meta-class-changes-after-executing -groovyshell –