代码之家  ›  专栏  ›  技术社区  ›  nowiko

功能测试多语言Symfony2应用程序

  •  3
  • nowiko  · 技术社区  · 9 年前

    我试着测试我的多语言应用程序。我的申请表有四种语言。我尝试测试indexAction(),当爬虫浏览我的页面时,我想检查标题的计数,但标题可以是英语或日语。当我通过翻译键时,它不起作用。以下是代码:

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

    所以问题是,我可以通过翻译密钥进入测试吗?或者我需要硬编码值?

    1 回复  |  直到 9 年前
        1
  •  4
  •   Aleksander Wons    9 年前

    您可以尝试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 。更复杂的解决方案,因此您可以从上面的解决方案开始。