我正在对一个控制器进行单元测试,目前我已经遇到了" encodeAsJSON()"的方法调用。在服务中(由控制器调用)。
我得到了MissingMethodException,我期望它是encodeAsJSON()是Grails-Codec。
经过一些搜索loadCodec
- 方法应该做我想要的。
但是我无法导入它,因为我的IDE(SpringSource-ToolSuite)无法找到它。
错误:
import org.codehaus.groovy.grails.plugins.codecs.JSONCodec
一切正常:
import org.codehaus.groovy.grails.plugins.codecs.HTMLCodec
但我不需要HTMLCodec而且documentation没有列出JSONCodec。
该方法本身仍然有效(运行应用程序),但我不知道如何对其进行单元测试。 有任何想法吗?我错过了一些明显的东西吗?
答案 0 :(得分:2)
嗯,进一步搜索和尝试得到了答案:
Map.metaClass.encodeAsJSON = { -> delegate }
我使用的例子是
String.metaClass.encodeAsSha1 = { -> delegate }
(Source)
字符串不起作用 - 当然因为我正在使用Map,它应该转换为JSON。
我认为你必须“模拟”(这是真正的模拟吗?)它在相应数据类型的Groovy-Interface上。
希望这有助于其他人