json - 如何对使用转换器的 Grails 服务进行单元测试?

标签 json grails serialization grails-2.0

我有一个 Grails 服务,它使用第三方服务通过 HTTP 调用发送电子邮件:

class EmailService {
    def sendEmail(values) {
        def valueJson = values as JSON
        ... // does HTTP call to 3rd party service
    }
}

我编写了一个单元测试来测试这个服务(因为集成测试会启动 Hibernate 和整个域框架,我不需要):

@TestFor(EmailService)
class EmailServiceTests {
    void testEmailServiceWorks() {
        def values = [test: 'test', test2: 'test2']
        service.sendEmail(values)
    }
}

但是,当我执行此单元测试时,它会在尝试进行 as JSON 转换时失败并出现此异常:

org.apache.commons.lang.UnhandledException: org.codehaus.groovy.grails.web.converters.exceptions.ConverterException: Unconvertable Object of class: java.util.LinkedHashMap

然后我重新编写了我的单元测试以执行以下操作:

void testEmailServiceWorks() {
    def value = [test: 'test', test2: 'test2']
    def valueJson = value as JSON
}

当它尝试进行 as JSON 转换时,我得到了同样的异常。

有谁知道我为什么会收到此异常,以及如何解决它?

最佳答案

即使您正在测试服务,您也可以将 @TestMixin(ControllerUnitTestMixin) 注释应用于您的测试类,以让 Grails 设置 JSON 转换器。

关于json - 如何对使用转换器的 Grails 服务进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785708/

相关文章:

android - Parcelable 遇到 IOException 写入可序列化对象 getactivity()

hadoop - 如何为存储为文本的 Hive 表中的 NULL 值指定自定义字符串?

javascript - JSON.parse 在有效 Json 上失败。已转义控制字符。如果

grails - 如何让lesscss-resources插件在自己的插件中处理更少的文件?

testing - 如何在grails的集成测试中访问 session ?

hibernate - 使用InnoDB作为数据源在Grails域中指定索引前缀长度

Python JSON序列化排除某些字段

json - 错误函数未返回 JSON 格式

java - Jersey moxy-media-module 不支持 json

json - 如何使用动态对象反序列化JSON?