2015-04-01 64 views
2

我试图测试我的多语言应用。我的应用程序中有四种语言形式。我尝试测试indexAction(),当爬行器遍历我的页面时,我想检查标题的数量,但标题可以是英语或日语,例如。当我通过翻译键时,它不起作用。这里是代码:功能测试多语言Symfony2应用

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

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

回答

3

你可以尝试通过弗洛里安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的可能性。更复杂的解决方案,所以你可以从上面的一个开始。

+1

尽管此链接可能回答问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Rajesh 2015-04-01 11:38:25

+0

hm,但为什么travic-ci没有看到我的错误,而我的朋友帮助我创建了这个项目,并通过了所有测试。 – nowiko 2015-04-01 14:02:36

+0

很难回答这个问题,因为我们不知道你的CI环境是如何配置的。但我会先从调查本地测试是否在先工作开始。 – 2015-04-02 09:25:01