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


Functional testing multilanguage Symfony2 app

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

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

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

您可以尝试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

博客文章还介绍了使用编译器通行证的可能性。一个更复杂的解决方案,所以您可以从上面的解决方案开始。