功能测试多语言Symfony2应用
问题描述:
我试图测试我的多语言应用。我的应用程序中有四种语言形式。我尝试测试indexAction(),当爬行器遍历我的页面时,我想检查标题的数量,但标题可以是英语或日语,例如。当我通过翻译键时,它不起作用。这里是代码:功能测试多语言Symfony2应用
$this->assertEquals(1, $crawler->filter('html:contains("logo_text")')->count());
所以问题是,我可以通过翻译密钥到测试?或者我需要某种硬编码值?
答
你可以尝试通过弗洛里安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的可能性。更复杂的解决方案,所以你可以从上面的一个开始。
尽管此链接可能回答问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Rajesh 2015-04-01 11:38:25
hm,但为什么travic-ci没有看到我的错误,而我的朋友帮助我创建了这个项目,并通过了所有测试。 – nowiko 2015-04-01 14:02:36
很难回答这个问题,因为我们不知道你的CI环境是如何配置的。但我会先从调查本地测试是否在先工作开始。 – 2015-04-02 09:25:01