【问题标题】:Functional testing multilanguage Symfony2 app功能测试多语言 Symfony2 应用程序
【发布时间】:2015-06-05 23:51:53
【问题描述】:

我正在尝试测试我的多语言应用程序。我的申请中有四种语言形式。我尝试测试 indexAction(),当爬虫浏览我的页面时,我想检查标题的数量,但标题可以是英文或日文。当我传递翻译密钥时,它不起作用。这是代码:

$this->assertEquals(1, $crawler->filter('html:contains("logo_text")')->count());

所以问题是,我可以将翻译密钥传递给测试吗?或者我需要某种硬编码值?

【问题讨论】:

    标签: php symfony phpunit functional-testing


    【解决方案1】:

    您可以试试 Florian Eckerstorfer 的这个解决方案: https://florian.ec/articles/use-translation-keys-in-symfony2-functional-tests/

    它基本上创建了一个新的翻译器,它将返回一个键而不是真正的翻译。

    class NoTranslator implements TranslatorInterface
    {
      public function trans($id, array $parameters = array(), $domain = null, $locale = null)
      {
        return $id;
      }
    ...
    }
    

    然后注册它:

    # app/config/config_test.yml
    parameters:
        translator.class: Acme\DemoBundle\Translation\Translator\NoTranslator
    

    博文还描述了使用Compiler Passes 的可能性。更复杂的解决方案,因此您可以从上述解决方案开始。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • 嗯,但是为什么 travic-ci 没有看到我的错误,以及帮助我​​创建这个项目并通过所有测试的朋友。
    • 这个问题很难回答,因为我们不知道您的 CI 环境是如何配置的。但我会先调查您的本地测试是否首先起作用。
    • 不再对 Symfony3 有效。您将需要使用服务装饰来更换翻译器。在这里阅读:stackoverflow.com/questions/39470596/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2017-10-05
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多