Questions tagged «phpunit»

3
为Magento 2模块创建集成测试
到目前为止,为了满足Magento 2的测试需求,我一直在使用PHP Unit(或多或少)作为验收测试器-测试服务器和HTML请求的结果,这些请求是在安装了模块的系统中进行的。我希望能够创建自己的集成测试。Magento 2附带的测试工具是否允许第三方开发人员利用Magento的测试框架代码创建自己的集成测试?还是我们都将推出自己的引导程序? 那是 我是Magento开发人员 我想创建一个集成测试 我要在集成测试中使用完全引导的Magento环境(例如,使用对象管理器和/或依赖项注入) 我希望我的集成测试可以扩展该 Magento\TestFramework\TestCase\AbstractController测试,所以我的助手与Magento测试相同 我希望能够独立于测试套件的其余部分运行测试(即不必等待2个小时即可运行15秒钟的测试) 我想将测试与Magento的测试分开存储 开发文档站点上有一些关于测试的入门文章,但它们似乎是针对运行Magento附带的测试,而不是创建和运行自己的测试。这里有旧的示例模块,但是它们都扩展了PHPUnit_Framework_TestCase类并且似乎是单元测试(即,不依赖Magento框架的测试代码) 有Magento提供的方法吗? 如果不是,那么是否有人以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(), …

3
由于缺少vfsstream,安装了Composer的Ecomdev_PhpUnit跳过了测试
我正在使用Enterprise Edition 1.13.1安装(尽管Community Edition会有相同的问题),并且我们正在通过composer安装可用的依赖项。我已经通过composer安装了Ivan的Ecomdev_PhpUnit扩展,该扩展已购买了所有正常的phpunit依赖项。我还将vendor / ivanchepurnyi / ecomdev_phpunit中的phpunit.xml.dist复制到了项目的根目录中。 第一次运行单元测试时,收到以下错误: The test was skipped, since vfsStream component is not installed. Try install submodules required for this functionality 随后,我将以下require-dev条目添加到composer.json并运行composer update: "mikey179/vfsStream": ">=1.2.0", 但是,PHPUnit仍然抱怨未安装vfsStream。 在GitHub存储库中查找Ecomdev_PHPUnit扩展,似乎已合并了一个补丁,以允许在使用composer时自动加载libvsfstream。但是,这似乎是部分解决方案,因为未在任何地方包含composer自动加载器,因此class_exists调用仍然失败。 我可以编辑/vendor/ivanchepurnyi/ecomdev_phpunit/app/code/community/EcomDev/PHPUnit/bootstrap.php:41以在引导过程中包含作曲家自动加载器(或将bootstrap.php复制到项目中的另一个位置并进行编辑) 。这是解决此问题的最佳解决方案,还是Composer或Ecomdev_PhpUnit中缺少我缺少的功能?

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

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.