我在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。
我做错了什么?我没有正确保存值,或者我没有以良好的方式获取它?
答案 0 :(得分:1)
您只将配置值保存到数据库,但不刷新Mage::getStoreConfig()
使用的配置缓存。
要在您可以使用的同时实现保存和刷新:
Mage::app()->getConfig()
->saveConfig('my/custom/path/config', 12)
->reinit();
这样,配置值将在当前和后续请求中可用。
如果你真的不需要持久性,也就是说,如果你只需要当前请求的配置值,那么我建议你使用:
Mage:app()->getStore()
->setConfig('my/custom/path/config', 12);