問題は、テストでは、Webサイト上のlangauge wont switchがうまくいくことです。 したがって、テストは失敗します。言語スイッチのためのSilexでの機能テスト
が$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->テキスト()はまだドイツ語のテキストを示し
私はこのルーティングを持っています。
言語ごとに1つのテストを作成する必要がありますか? 私の意見では、それは本当にlangaugeスイッチをテストすることはありません。
このようなシナリオをテストする一般的な方法は何ですか?
「あなたの翻訳者と結びついている」とはどういう意味ですか? 実際に私はTranslationServiceProviderを登録して使用します: $ app ['locale'] = $ locale; ドキュメントの例とほとんど同じです – ivoba
これはまさに問題です。トランスレータ(TranslationServiceProviderコードを見た場合)は、 'locale'パラメータで初期化され、その後、コンテナがさらに存在するために使用されます。サイレックスのトラッカーでチケットを開くつもりですが、私はそれを解決すると約束することはできません。 – igorw
私は今、私のテストを調整して、大丈夫、情報のために多くを参照してください – ivoba