我试图在测试中使用元类覆盖静态方法。
方法是:
org.boon.HTTP.jsonRestCallWithHeaders 它是一个Java类,超出了我的控制范围。
声明是:
public static Response jsonRestCallWithHeaders(
final String url,
final Map<String, ?> headers
)我试图通过以下方式用闭包覆盖该方法:
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。代码正在测试环境中运行。
发布于 2014-10-04 03:58:48
我已经测试了以下几个方面,而且效果很好:
HTTP.getMetaClass().static.jsonRestCallWithHeaders = { String url, Map<String, ?> headers ->
// ...
}https://stackoverflow.com/questions/26186118
复制相似问题