Функциональное тестирование многоязычного приложения Symfony2


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

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

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

Author: nowiko, 2015-04-01

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

В сообщении в блоге также описывается возможность использования Проходов компилятора. Гораздо более сложное решение, так что вы можете начать с того, что описано выше.

 3
Author: Aleksander Wons, 2015-04-01 11:54:50