HTTP呼び出しを行うことでサードパーティのサービスを使用して電子メールを送信するGrailsサービスがあります。
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:クラスの変換不可能なオブジェクト:java.util.LinkedHashMap
次に、単体テストを書き直して、次のことを実行します。
void testEmailServiceWorks() {
def value = [test: 'test', test2: 'test2']
def valueJson = value as JSON
}
as JSON
そして、変換しようとすると同じ例外が発生します。
なぜこの例外が発生するのか、どうすれば修正できるのか、誰か知っていますか?