Функциональное тестирование многоязычного приложения Symfony2
Я пытаюсь протестировать свое многоязычное приложение. У меня в заявке есть форма на четырех языках. Я пытаюсь протестировать indexAction(), когда искатель просматривает мою страницу, я хочу проверить количество заголовков, но заголовок может быть, например, на английском или японском языках. Когда я передаю ключ перевода, он не работает. Вот код:
$this->assertEquals(1, $crawler->filter('html:contains("logo_text")')->count());
Итак, вопрос в том, могу ли я передать ключ перевода в тесты? Или мне нужно как-то жестко закодировать значение?
1 answers
Вы можете попробовать это решение Флориана Эккерсторфера: 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
В сообщении в блоге также описывается возможность использования Проходов компилятора. Гораздо более сложное решение, так что вы можете начать с того, что описано выше.