gpt4 book ai didi

grails - 测试 Controller 中MessageSource的实例(调用调用MessageSource的服务。)

转载 作者:行者123 更新时间:2023-12-02 14:40:50 24 4
gpt4 key购买 nike

我正在使用grails 2.3.6,并且正在尝试测试调用服务的 Controller ,该服务调用MessageSource。我已经尝试了本文(How to unit or integration test use of injected messageSource for i18n in Grails 2.0 service)中的所有解决方案,但仍收到此错误:

org.springframework.context.NoSuchMessageException: No message found under code 'enrolment.state.approved' for locale 'es_ES'.
at es.portel.accessRequest.enyca.EnrolmentClientService.enrolmentTranslateState(EnrolmentClientService.groovy:30)
at es.portel.accessRequest.enyca.EnrolmentClientService.enromentsTranslateState_closure1(EnrolmentClientService.groovy:13)
at es.portel.accessRequest.enyca.EnrolmentClientService.enromentsTranslateState(EnrolmentClientService.groovy:12)
at es.portel.accessRequest.enyca.EnrolmentClientController.getAllEnrolments(EnrolmentClientController.groovy:41)
at es.portel.accessRequest.enyca.EnrolmentClientControllerSpec.test getAllEnrolments method(EnrolmentClientControllerSpec.groovy:34)

这是我的测试代码:
@TestFor(EnrolmentClientController)
@Mock(EnrolmentClientService)
class EnrolmentClientControllerSpec extends Specification{
void "test getAllEnrolments method"() {
given:
MessageSource messageSource = getMessageSource()
controller.enrolmentClientService = new EnrolmentClientService()
controller.enrolmentClientService.messageSource = messageSource
Locale locale1 = new Locale("es_ES")
messageSource.addMessage('enrolment.state.approved',locale1, 'Aprobado')

when:
controller.getAllEnrolments()

then:
assertEquals response.status, HttpServletResponse.SC_OK
assertEquals response.format, 'json'
}
}

有任何想法吗?
提前致谢。

最佳答案

经过几次头痛之后,我终于解决了。我按照saw303告诉我的模拟服务和正确的设置进行了模拟服务。这是工作代码:

@TestFor(EnrolmentClientController)
class EnrolmentClientControllerSpec extends Specification {
@Shared
def messageSource = new StaticMessageSource()

def setupSpec() {
Locale locale1 = new Locale("es_ES")
messageSource.useCodeAsDefaultMessage = true
messageSource.addMessage "enrolment.state.approved", locale1, "Aprobado"
}


void "test getAllEnrolments method"() {
given:
controller.enrolmentClientService = new EnrolmentClientService()
controller.enrolmentClientService.messageSource = messageSource

when:
request.method = 'GET'
response.format = 'json'
controller.getAllEnrolments()
}
}

关于grails - 测试 Controller 中MessageSource的实例(调用调用MessageSource的服务。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com