功能测试多语言 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/
它基本上创建了一个新的翻译器,它将 return 一个键而不是真正的翻译。
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
博客 post 也描述了使用 Compiler Passes 的可能性。解决方案复杂得多,因此您可以从上面的解决方案开始。
我正在尝试测试我的多语言应用程序。我的应用程序中有四种语言形式。我尝试测试 indexAction(),当爬虫浏览我的页面时,我想检查标题的数量,但标题可以是英文或日文。当我传递翻译密钥时,它不起作用。这是代码:
$this->assertEquals(1, $crawler->filter('html:contains("logo_text")')->count());
所以问题是,我可以将翻译密钥传递给测试吗?或者我需要以某种方式硬编码值?
您可以试试 Florian Eckerstorfer 的解决方案: https://florian.ec/articles/use-translation-keys-in-symfony2-functional-tests/
它基本上创建了一个新的翻译器,它将 return 一个键而不是真正的翻译。
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
博客 post 也描述了使用 Compiler Passes 的可能性。解决方案复杂得多,因此您可以从上面的解决方案开始。