Unit testing Mage#u Core#u Model#u Config不';t在单元测试中获取值
我在Magento上进行单元测试时发现了一个奇怪的问题 我有一个测试函数,它测试Unit testing Mage#u Core#u Model#u Config不';t在单元测试中获取值,unit-testing,magento,config,Unit Testing,Magento,Config,我在Magento上进行单元测试时发现了一个奇怪的问题 我有一个测试函数,它测试core\u config\u data表中的值。因此,为了能够访问该值进行测试,在setUp()函数中,我将配置值保存在数据库中: public function setUp() { parent::setUp(); $systemConfig = new Mage_Core_Model_Config(); $systemConfig->saveConfig( 'my/
core\u config\u 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
我做错了什么?我没有正确地保存值,或者我没有以良好的方式获取它?您只将配置值保存到数据库,但没有刷新配置缓存,该缓存由
Mage::getStoreConfig()
使用
要同时实现保存和刷新,您可以使用:
Mage::app()->getConfig()
->saveConfig('my/custom/path/config', 12)
->reinit();
这样,配置值将在当前和后续请求中可用
如果您真的不需要持久性,也就是说,如果您只需要当前请求的此配置值,那么我建议您使用:
Mage:app()->getStore()
->setConfig('my/custom/path/config', 12);
您只将配置值保存到数据库,但不刷新配置缓存,该缓存由
Mage::getStoreConfig()
使用
要同时实现保存和刷新,您可以使用:
Mage::app()->getConfig()
->saveConfig('my/custom/path/config', 12)
->reinit();
这样,配置值将在当前和后续请求中可用
如果您真的不需要持久性,也就是说,如果您只需要当前请求的此配置值,那么我建议您使用:
Mage:app()->getStore()
->setConfig('my/custom/path/config', 12);