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);

但它的值为空,而不是预期的字符串。

这很奇怪,因为如果我在运行测试后刷新数据库,它在数据库中存在的值。如果我再次运行测试,测试将起作用并且它的值不再为空。

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

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 回答