1

Magento で単体テストを行っているときに、奇妙な問題が見つかりました。

テーブルの値をテストするテスト関数がありcore_config_dataます。したがって、テストのためにその値にアクセスできるようにするために、setUp() 関数で、構成値をデータベースに保存しています。

public function setUp()
{
    parent::setUp();
    $systemConfig = new Mage_Core_Model_Config();
    $systemConfig->saveConfig(
        'my/custom/path/config',
        12
    );
}

私のテストメソッドでは、データベースのようにその値を取得しています:

$productsNo = Mage::getStoreConfig(my/custom/path/config);

しかし、その値は null であり、期待どおりの文字列ではありません。

テストの実行後にデータベースを更新すると、値がデータベースに存在するため、これは奇妙です。テストを再度実行すると、テストは機能し、値は null ではなくなります。

私は何を間違っていますか?値を正しく保存していませんか、それとも良い方法でフェッチしていませんか?

4

1 に答える 1

1

構成値をデータベースに保存するだけで、によって使用される構成キャッシュは更新されませんMage::getStoreConfig()

保存と更新を同時に行うには、次を使用できます。

Mage::app()->getConfig()
    ->saveConfig('my/custom/path/config', 12)
    ->reinit();

このようにして、構成値は現在および後続の要求で使用可能になります。

永続性が本当に必要ない場合、つまり、現在の要求に対してこの構成値のみが必要な場合は、以下を使用することをお勧めします。

Mage:app()->getStore()
    ->setConfig('my/custom/path/config', 12);
于 2012-08-23T11:04:14.123 に答える