2012-07-12 78 views
0

我正在测试一个控制器的单元,目前我被一个服务(由控制器调用)中的“encodeAsJSON()”方法调用卡住了。Grails单元测试:Json-Codec缺失/如何模拟Json-Codec?

我得到的MissingMethodException,这是我所期待的encodeAsJSON()是一个与Grails编解码器。

经过一番搜索loadCodec -Method应该做我想做的。

但我不能导入它,因为我的IDE(SpringSource的-工具包)无法找到它。

错误:

import org.codehaus.groovy.grails.plugins.codecs.JSONCodec 

一切工作:

import org.codehaus.groovy.grails.plugins.codecs.HTMLCodec 

但我不需要HTMLCodec和documentation不会列出JSONCodec。

的方法本身仍然是工作(运行应用程序),但我不知道如何单元测试。 有什么建议吗?我错过了明显的东西吗?

回答

2

那么,进一步的搜索,并试图让我的回答是:

Map.metaClass.encodeAsJSON = { -> delegate } 

我使用的例子是

String.metaClass.encodeAsSha1 = { -> delegate } 

Source

字符串没有工作 - 当然的我正在使用应该转换为JSON的地图。

我认为你必须“模拟”(这是真的嘲弄?)它的相应数据类型的Groovy的接口。

希望这有助于别人