3

parameters.yml:

time_limit:        8

my_ui.yml:

my_ui:
    time_limit: %time_limit%

config.yml:

imports:
    - { resource: my_ui.yml }

その後、バンドル内のExtensionクラスとConfigurationクラスを介して、コントローラーでこの問題にアクセスできます。

time_limitテスト環境でを上書きするにはどうすればよいですか?

my_ui_test.ymlファイルに別のファイルをロードしようとしましconfig_test.ymlたが、役に立ちませんでした。

4

3 に答える 3

4

それを理解しました:ホストごとに1つのパラメータファイルが必要です。ただし、1つのホストの環境ごとに異なるパラメーターが必要です。

parameters.yml:

parameters:
    time_limit: 8

my_ui.yml:

my_ui:
    time_limit: %time_limit%

config.yml:

imports:
    - { resource: my_ui.yml }

それは私8devenvを与えます。

次に、parameters_test.yml:

parameters:
    time_limit: 0

config_test.yml:

imports:
    - { resource: parameters_test.yml }

それは私0testenvを与えます。

于 2013-03-17T14:19:50.953 に答える
1

ファイル内のパラメーターをオーバーライドし、機能テストを実行するときconfig_test.ymlにコントローラーに要求を行うようにしてください。app_test.phpそのコントローラーが存在しない場合は、app_dev.php変更からコピーします

$kernel = new AppKernel('dev', true);

$kernel = new AppKernel('test', true);

たとえば、パスワードを毎回1〜2秒でエンコードするbcryptパスワードエンコーダーを使用しています。これはテストには受け入れられないので、テストconfig_test.ymlを高速化するためにコストを最小値にオーバーライドします。

security:
    encoders:
        Elnur\Model\User:
            algorithm: bcrypt
            cost: 4

このように本番環境ではコストがかかります14が、テストでは4

于 2013-03-17T13:34:57.997 に答える
0

私が見つけた最善の方法は、テスト用に独自の機能テスト環境をセットアップすることです。これは、prod/dev環境から完全に分離されています。

Johann Schmidtsバンドルで、このアプローチの優れた例を学ぶことができます。JMSPaymentCoreBundleから1つをコピーして、プロジェクトに適合させました。

もう1つのアプローチは、config_test.ymlファイルにインクルード(およびprodとdevの設定をオーバーライド)することです。このファイルは、テストクライアントのみがロードする必要があります。

于 2013-03-17T12:52:53.307 に答える