Mage_Core_Model_Config不会在单元测试中获取值

时间:2012-08-23 06:30:28

标签: unit-testing magento config

我在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。

我做错了什么?我没有正确保存值,或者我没有以良好的方式获取它?

1 个答案:

答案 0 :(得分:1)

您只将配置值保存到数据库,但不刷新Mage::getStoreConfig()使用的配置缓存。

要在您可以使用的同时实现保存和刷新:

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

这样,配置值将在当前和后续请求中可用。

如果你真的不需要持久性,也就是说,如果你只需要当前请求的配置值,那么我建议你使用:

Mage:app()->getStore()
    ->setConfig('my/custom/path/config', 12);