2015-04-01 2 views
2

Я пытаюсь проверить свое многоязычное приложение. В моем приложении есть четыре языка. Я пытаюсь проверить indexAction(), когда искатель просматривает мою страницу, я хочу проверить количество заголовков, но заголовок может быть на английском или японском, например. Когда я передаю ключ перевода, это не сработает. Вот код:Функциональное тестирование многоязычного приложения Symfony2

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

Вопрос в том, могу ли я передать переводный ключ в тесты? Или мне нужно какое-то значение hardcode?

ответ

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

+0

hm, но почему travic-ci не видел мою ошибку, и мой друг, который помогает мне создать этот проект, все тесты прошли. – nowiko

+0

Трудно ответить на этот вопрос, так как мы не знаем, как настроена среда CI. Но я начну с расследования, если вы сначала проводите локальные тесты. –

Смежные вопросы