【问题标题】:Yii2 deployment for contributingYii2 部署用于贡献
【发布时间】:2019-01-21 06:27:31
【问题描述】:

我是初学者 Yii2 贡献者。当我在 yiisoft/yii2 项目中做出贡献时,很清楚如何部署该项目并运行其 phpunit-tests。但我对使用扩展有一些疑问:

  1. 首先我添加一个带有composer require 的扩展名。然后git clone 在我的主目录中使用相同的扩展名。之后,我将第一个目录替换为指向第二个的符号链接。这很方便,因为我可以在网站上看到更改,但我不能再使用作曲家了。

  2. 如何运行扩展的测试?它们通常依赖于 Yii2 应用类,但是

$ vendor/bin/phpunit vendor/yiisoft/yii2-elasticsearch/tests/
PHP Fatal error:  Class 'yiiunit\extensions\elasticsearch\TestCase' not found in /var/www/yii2.test/vendor/yiisoft/yii2-elasticsearch/tests/ActiveDataProviderTest.php on line 11
$ vendor/bin/phpunit vendor/yiisoft/yii2-queue/tests/
PHP Fatal error:  Class 'tests\TestCase' not found in /var/www/yii2.test/vendor/yiisoft/yii2-queue/tests/JobEventTest.php on line 22

我应该指定一个配置文件吗?或者我应该独立运行这些测试 框架?

那么,您能否与我分享一下关于这种情况的最佳做法?

【问题讨论】:

    标签: unit-testing deployment yii2


    【解决方案1】:

    您应该在框架之外运行这些测试。从扩展的角度来看,yiisoft/yii2 是一个依赖项,应该安装在扩展目录内的vendor 目录中。所以简而言之,你应该去扩展目录并调用composer install。在此之后,您应该得到类似于以下的目录结构:

    extension/
    ├── src/
    │   └── ...
    ├── vendor/
    │   ├── yiisoft/
    │   │   ├── yii2/
    │   │   └── ...
    │   └── ...
    ├──composer.json
    └── ...
    

    然后您可以直接从扩展目录运行测试(可能通过vendor/bin/phpunit 命令)。

    【讨论】:

    • 好的,现在很清楚了,但让我有点沮丧。你能谈谈第一个问题吗?通过符号链接访问源是个好主意吗?之后如何执行供应商更新?有没有其他方法可以在工作期间获得实时结果?
    • 在完美的世界里,你根本不需要这样做——扩展应该是独立的,所有可能的场景都应该被单元测试覆盖。因此,无需将扩展链接到您的应用程序即可进行任何测试。但是如果我真的需要在我的应用程序中测试一些补丁,我将添加指向我的 fork 的 vcs 存储库 - 这样你就可以同时使用 git 和 composer 的力量。有关详细信息,请参阅this answer
    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2010-12-24
    • 1970-01-01
    • 2017-03-03
    • 2011-09-13
    相关资源
    最近更新 更多