【问题标题】:Grails integration testing of internationalized REST calls国际化 REST 调用的 Grails 集成测试
【发布时间】:2013-02-11 12:59:06
【问题描述】:

我正在尝试通过 Grails 控制器的集成测试来测试国际化。 控制器已启用 REST 并返回 JSON 响应。

为了测试国际化,可以简单地在 URL 中给出 ?lang=es,然后 grails 内部使用相应的消息包。

我在一个支持项目中,国际化已经按预期进行。当我发出 curl 请求时,我会收到正确语言的响应。

集成测试只是为了验证不同语言的特定响应。

我不确定如何从集成测试中请求任何语言。

我试过了:

  1. response.locale = new Locale("es", "es") //不起作用
  2. controller.params.lang = "es" // 不起作用

我没有从http://grails.org/doc/latest/guide/i18n.html#changingLocales 那里找到太多帮助。也不是来自其他问题,而是一篇相关文章可能是How to unit or integration test use of injected messageSource for i18n in Grails 2.0 service

【问题讨论】:

    标签: rest grails internationalization integration-testing


    【解决方案1】:

    集成测试使用具有addPreferredLocale(Locale) 方法的GrailsMockHttpServletRequest 类来更改当前测试请求的语言环境。

    通常我们通过RequestContextHolder获取请求:

    def request = RequestContextHolder.currentRequestAttributes().request
    request.addPreferredLocale(new Locale("pt","BR"))
    

    【讨论】:

    • 谢谢。然而,这似乎对我不起作用。我的调试仍在继续。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多