Questions tagged «unit-tests»

表示与Magento上的单元测试有关的问题。


2
在Magento 2中使用PHPUnit 4.1对PHP7代码进行单元测试的正确方法是什么?
在编写模块时,我试图为它们提供应用程序最关键部分的单元测试。但是,目前(Magento 2.1.3)有几种编写单元测试的方法: 不同的测试方式 与它集成bin/magento dev:tests:run unit并在与Magento捆绑在一起的默认phpunit设置之上运行它。 分别编写它们,与它们一起运行vendor/bin/phpunit app/code/Vendor/Module/Test/Unit并模拟Magento的所有内容。 分别编写它们,模拟所有内容,并使用系统全局版本的PHPUnit。 单独编写它们,然后使用运行它们vendor/bin/phpunit,但仍然使用\Magento\Framework\TestFramework\Unit\Helper\ObjectManager。 Magento 2和PHPUnit 除此之外,Magento 2捆绑了与PHP7不兼容的PHPUnit 4.1.0。提示类型的本机(如string和int)并在签名中声明返回类型将引发错误。例如,具有方法签名的接口/类如下: public function foo(string $bar) : bool; ...将无法被PHPUnit 4.1.0模拟。:-( 我目前的情况 因此,我现在主要以第三种方式(通过调用系统全局PHPUnit版本)编写单元测试。 在我的设置中,我全局安装了PHPUnit 5.6,因此我可以解决编写正确的PHP7代码的问题,但是我必须做一些调整。例如: phpunit.xml 必须看起来像这样,所以我可以使用composer autoloader: <?xml version="1.0"?> <phpunit bootstrap="../../../../../../vendor/autoload.php" colors="true"> <testsuites> <testsuite name="Testsuite"> <directory>.</directory> </testsuite> </testsuites> </phpunit> ...以及我所有的setUp()方法中,都有以下检查,以便可以编写具有前向兼容性的测试: // Only allow PHPUnit 5.x: if (version_compare(\PHPUnit_Runner_Version::id(), …

4
Magento中的单元测试工具
您在Magento中使用什么进行单元测试?或者您对单元测试和Magento了解多少?无论您是执行TDD还是只想对项目组件进行单元测试,都需要一些工具来执行此操作。 第一种基本方法是使用简单的phpunit,但是有些事情需要附加的头才能使Magento“可测试”。 我使用的所有内容都与phpunit相关: MTAF EcomDev_PHPUnit(缺点:无法测试电子邮件) TechDivision_MagentoUnitTesting(尝试向后移植Magento 2单元测试) 法师测试(Magento的轻量级单元测试) 还有其他选择吗?

3
Magento EE 1.13中设置的EcomDev_PHPUnit
我正在尝试按照EE 1.13中的说明设置EComDev_PHPUnit https://github.com/EcomDev/EcomDev_PHPUnit 好,第一个障碍是让modman工作,但是我放弃了,并手动复制了模块。现在第二个问题在步骤2中:当我执行时 php ecomdev-phpunit.php -a magento-config --db-name $DB_NAME --base-url http://your.magento.url/ 我得到一个例外,说 PHP Fatal error : Class 'Mage_Core_Model_Factory' not found in '../../../shell/abstract.php' on line 88 我去了并在abstract.pho中用require_once添加了工厂路径,但是随后抛出一个错误,提示缺少另一个类... 有人遇到过这个吗?我在VirtualBox中使用Ubuntu 12.10。任何帮助,将不胜感激。 解决方案或临时解决方案: 我必须添加 require_once '../app/code/core/Mage/Core/Model/Factory.php'; require_once '../app/Mage.php'; 作为的第一行 ../shell/ecomdev-phpunit.php 这使它工作正常。我不确定这是对还是错:)专家建议会受到欢迎(stackexchange不允许我在提出问题的8小时内添加解决方案,并且我的声誉较低,因此在此处添加答案)

3
Magento 1测试框架
在任何可能的地方,我都喜欢按照测试驱动开发(TDD)方法开发软件。通常,在PHP中这意味着使用PHPUnit。 理想情况下,我想编写细粒度和粗粒度的测试。单元测试可帮助指导我的代码的设计和质量,集成测试可确保所有代码并在一起,而高层测试则可在验收测试中确保我确实交付了客户要求我交付的内容。 是否有针对Magento量身定制的测试框架可以促进TDD?

1
Magento中的单元测试观察员
您如何处理Magento中的单元测试观察员?(使用EcomDev_PHPUnit) 包括哪些断言? 检查事件是否已调度(assertEventDispatched()) 用模拟数据检查功能 ... 理想情况下,我希望看到其他开发人员对方法和声明的看法。

2
Magento 1.9中单元测试的最佳实践
我维护了带有多个自定义模块的Magento 1.9网站。其中一些功能对业务至关重要,并且迫切需要一些单元测试。例如,单价计算器。 我通常在Symfony中进行开发,并且如果可能的话,我真的更愿意以某种方式使用PHPUnit(w / Composer)。 一些功能基于导入到几个自定义数据库表中的数据,因此我宁愿以某种方式加载固定装置。 因此,我正在寻找编写一些单元测试的最佳实践方法。我乐意接受教程或类似的东西。任何帮助表示赞赏。

3
单元测试源模型
我的自定义扩展中有几个模型,这些模型仅用于填充实体的添加/编辑形式中的某些选择和/或多项选择。 因此,它们被magento称为“源模型”。 所涉及的值始终相同,并且方法返回的内容相同。 我应该如何对它们进行单元测试?甚至更好,我应该为他们编写单元测试吗? 这是一个例子。 下列类用于添加/编辑表单(称为)的字段type以及同一字段的Grid列。 <?php namespace Sample\News\Model\Author\Source; use Magento\Framework\Option\ArrayInterface; class Type implements ArrayInterface { const COLLABORATOR = 1; const EMPLOYEE = 2; /** * Get options * * @return array */ public function toOptionArray() { $_options = [ [ 'value' => '', 'label' => '' ], [ 'value' …

2
如何模拟上下文对象
我正在尝试测试包含上下文对象的模块,如下所示: public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Catalog\Model\Product\ImageFactory $productImageFactory, \Magento\Framework\View\Asset\Repository $assetRepo, \Magento\Framework\View\ConfigInterface $viewConfig, ProductRepository $productRepo ) { parent::__construct($context, $productImageFactory, $assetRepo, $viewConfig); $this->productRepo = $productRepo; } 当我运行单元测试时,它会显示以下错误消息: PHPUnit_Framework_Error : Argument 1 passed to Magento\Catalog\Model\Product::__construct() must be an instance of Magento\Framework\Model\Context, none given, called in ... 如何模拟该对象或解决此错误?

2
如何通过magento 2中的单元测试的对象管理器获取ScopeConfigInterface?
我正在尝试从magento 2数据库的core_config_table中读取我的单元测试中的一行。我已阅读此链接,知道完成这项工作 。我必须使用: \Magento\Framework\App\Config\ScopeConfigInterface 通过: \Magento\Framework\TestFramework\Unit\Helper\ObjectManager 这是我的代码: protected function setUp() { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->scopeConfig = $objectManager->getObject('\Magento\Framework\App\Config\ScopeConfigInterface'); } public function testgetImageCDNConfigValue() { $this->scopeConfig->getValue($this->path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE); if ($this->scopeConfig == null) { $this->assertFalse(true); } else { $this->assertTrue(true); } } 我可以使用testObject获得我想要的每个对象,\Magento\Framework\TestFramework\Unit\Helper\ObjectManager但是每当我想要获得时\Magento\Framework\App\Config\ScopeConfigInterface 致命错误:无法在第162行的C:\ xampp \ htdocs \ magento \ vendor \ magento \ framework …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.