3

phpunit を使用して多言語サイトをテストしています。私が実行したいテストの 1 つは、アプリケーションがユーザーのロケールを検出し、自動的にリダイレクトすることです。

つまり、ユーザーは / でサイトにアクセスします。アプリケーションは、彼らがフランス出身であることを検出し、/fr-FR/ にリダイレクトします。

アプリケーションはこれを実行しているように見えますが、これに対する単体テストを作成しようとするのは不可能に思えます。テストのためにロケールを偽造する必要があります。誰でもアドバイスできますか?

4

2 に答える 2

4

解決策は、コード自体をよりテストしやすくすることでした。

私のテストでは、次のものがあります。

    $locale = new Zend_Locale();

    $locale->setLocale('fr_FR');
    Zend_Registry::set('Zend_Locale', $locale); 

そして今、私のアプリで使用しています:

    $locale = Zend_Locale::findLocale(); 
    $locale = new Zend_Locale($locale);

ロケールを設定します。findLocale は最初に Zend_Registry のエントリをチェックします。

于 2010-09-23T08:56:26.640 に答える
2

おそらく、ブラウザが送信するAccept-Languageヘッダーを見ています。PHPでこれにアクセスするには、を使用し$_SERVER['HTTP_ACCEPT_LANGUAGE']ます。これはグローバルであるため、テストセットアップで、その値を変更できます。

$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "en";
于 2010-09-22T17:02:17.213 に答える