Проблема в том, что в тестах langauge не будет переключаться, на сайте это хорошо.Итак, тесты не пройдены.
У меня есть такая маршрутизация:
$app->before(function () use ($app) {
if ($locale = $app['request']->get('locale')) {
$app['locale'] = $locale;
}
...
});
$app->get('/{locale}/index', function () use ($app) {
return $app['twig']->render('index.twig');
})->assert('locale',implode('|', $app['languages']));
$app->get('/{locale}', function () use ($app) {
return $app->redirect("/".$app['locale']."/index");
})->assert('locale',implode('|', $app['languages']));
Тест таков:
public function testLanguageRoutes(){
$client = $this->createClient();
$client->followRedirects();
$crawler = $client->request('GET', '/de');
$this->assertTrue($client->getResponse()->isOk());
$this->assertTrue($crawler->filter('html:contains("Kopf")')->count() > 0);
$crawler = $client->request('GET', '/de/index');
$this->assertTrue($client->getResponse()->isOk());
$this->assertTrue($crawler->filter('html:contains("Kopf")')->count() > 0);
$crawler = $client->request('GET', '/fr');
$this->assertTrue($client->getResponse()->isOk());
//TODO not working, still returns de should return fr
var_dump($crawler->text());
$this->assertTrue($crawler->filter('html:contains("Pied")')->count() > 0);
$crawler = $client->request('GET', '/aa');
$this->assertTrue($client->getResponse()->isNotFound());
}
Здесь переключение на французский не будет работать, $ crawler-> text () по-прежнему показывает текст на немецком языке.
Нужно ли создавать один тест для каждого языка?По моему мнению, это не будет проверять переключатель языка на самом деле.
Что является обычным способом проверки такого сценария?