我有一个 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/