首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy和Metaclass

Groovy和Metaclass
EN

Stack Overflow用户
提问于 2014-10-03 20:14:06
回答 1查看 476关注 0票数 0

我试图在测试中使用元类覆盖静态方法。

方法是:

代码语言:javascript
复制
org.boon.HTTP.jsonRestCallWithHeaders 

它是一个Java类,超出了我的控制范围。

声明是:

代码语言:javascript
复制
public static Response jsonRestCallWithHeaders(
            final String url,
            final Map<String, ?> headers
    )

我试图通过以下方式用闭包覆盖该方法:

代码语言:javascript
复制
HTTP.metaClass.static.jsonRestCallWithHeaders =  { String url, Map<String, ?> headers ->
            if (url.path?.contains('/quotes')) {
                [prop1:value1,
                        prop2: value2 ] as JSON }

但是,当它碰到重定向请求时,它不会尝试重写该方法。它初始化HTTP类,并尝试调用HTTP.get函数。

,我的问题是:为什么要为调用HTTP::get静态方法的jsonRestCallWithHeaders方法提供这个定义?

堆叠痕迹的图片:

我使用的是Groovy 2.1.9,Grails: 2.3.8。代码正在测试环境中运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-04 03:58:48

我已经测试了以下几个方面,而且效果很好:

代码语言:javascript
复制
HTTP.getMetaClass().static.jsonRestCallWithHeaders =  { String url, Map<String, ?> headers ->
    // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26186118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档