PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何开始和回滚数据库事务以包装用于Magento的PHPUnit套件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想使用事务回滚方法隔离数据库以进行单元测试.理想情况下,我将使用类似以下的结构:

public static function setUpBeforeClass(){
    Mage_Core_Model_resource_transaction::begintransaction();
}

public function testOne(){...}
public function testTwo(){...}

public static function tearDownAfterClass(){
    Mage_Core_Model_resource_transaction::rollBACk();
}

不幸的是,Mage_Core_Model_resource_transaction类没有公开公共的begin / rollBACktransaction函数.我找不到任何公共的Magento函数来满足要求.有一个Zend等效项可以工作吗?

我想我可以重写Mage_Core_Model_resource_transaction并为受保护的方法添加公共包装,但是我犹豫要重写这样的核心类.

我也尝试使用

$this->model = Mage::getModel('model_being_tested');
$this->model->getresource()->begintransaction(); 
...
$this->model->getresource()->rollBACk();

然后在测试中使用$this->模型,但不能在静态函数中使用.

有什么建议或替代架构吗?提前致谢.

解决方法:

坦白地说,我将为Magento创建某种测试套件,以使您无需虑初始化等就可以在模块中编写测试用例.当然,由于项目的缘故,我没有足够的时间,但是我想分享一下我将要使用的数据库夹具的想法.我想为单元测试创​​建一个单独的数据库(由当前的测试用例复制),因为每个测试用例都会通过Fixture为其加载初始数据.数据库连接凭据将在Mage :: app()-> run()之前设置,因此可以通过单元测试来保护开发副本免受可能的更改.

您不能依赖事务,尤其是在保存产品的情况下…设置了一个提交回调来启动重新索引过程,如果您没有将数据提交到产品表,则可能导致不可预测的结果.同样,在这种情况下,MysqL服务器可能会消失,特别是如果您的数据库很大.

更新:

扩展名:
http://www.ecomdev.org/2011/02/01/phpunit-and-magento-yes-you-can.html

大佬总结

以上是大佬教程为你收集整理的如何开始和回滚数据库事务以包装用于Magento的PHPUnit套件全部内容,希望文章能够帮你解决如何开始和回滚数据库事务以包装用于Magento的PHPUnit套件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: