使用 Yii 进行 PHPUnit 敏捷 Web 开发

Posted

技术标签:

【中文标题】使用 Yii 进行 PHPUnit 敏捷 Web 开发【英文标题】:PHPUnit Agile Web Developement with Yii 【发布时间】:2012-09-03 05:14:30 【问题描述】:

我在阅读了其他类似的帖子之后,我觉得我已经按照信函进行了所有操作,因此我感到困惑和这篇帖子:

我正在跑步: - 视窗 7 64 位 - 带有 php 5.2.5 的 Wamp Server 2.0

我正在阅读 Packt Agile Web Development with Yii and PHP5

目前的行动:

    在 c:\wamp\bin\php5.2.5\PEAR\pear 中安装了 PEAR(它在 'PEAR' 中创建了一个子文件夹) 安装和设置 Selenium RC 为环境变量添加了 PEAR_ENV.reg 文件 重新启动并确认 PEAR 正在通过在命令提示符中键入“pear”来工作(也可以在任何子文件夹中工作) 通过 PEAR 安装 PHPUnit 并通过命令提示确认“phpunit”正在工作。在 'functional/SiteTest.php' 处为 Yii 测试用例使用 selenium 测试 phpunit 将 php.ini 文件(在 php5.2.5 文件夹和 apache 文件夹中)中的 include_path 更改并测试为“c:\wamp\bin\php5.2.5\PEAR\pear”。事实证明,phpunit 和 pear 都需要相同才能工作(?)

问题: 当我通过命令提示符键入时,以下命令有效:

cd c:\wamp\www\yiidemo\protected\tests
phpunit functional\SiteTest.php

phpunit 与 selenium 一起使用 firefox 测试网站。

但是当我按照书中的说明创建一个用于测试的空类并运行它时:

phpunit unit\MessageTest.php

我明白了:

"Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in c:\wamp\www\yiidemo\protected\tests\unit\MessageTest.php"

但是如果我进入单元文件夹并尝试命令:

phpunit MessageTest.php

我收到一条错误消息说明

"Fatal Error: Class 'CTestCase' not found in "c:\wamp\www\yiidemo\protected\tests\unit\MessageTest.php" on line 3

<?php 
class MessageTest extends CTestCase
    

    
?>

知道我做错了什么。到目前为止,我已经走了很长一段路,但由于命令行正在工作,所以我陷入了困境。

【问题讨论】:

我决定寻找物理 Autoload.php 文件但找不到。事实证明,与从Github Site 中提取 phpunit 相比,通过 pear 命令行安装的 phpunit 不包含此文件。更令人沮丧的是,Autoload.php 指向的文件也未包含在 pear 命令安装版本中,尽管添加了所有依赖项 'code'(--alldeps) 问题解决了吗?然后您可以回答您自己的问题并将其标记为已解决! :) ^ 很庆幸我没有读到这篇文章。但是我会进一步发布我的发现,当我解决它时,我会为社区发布一些内容 【参考方案1】:

更新。问题解决了。

问题持续存在的详细原因:

我使用的 phpunit 版本中没有 Autoload.php 文件,因此从 github 复制最新版本并将其转储到 pear 文件夹中并从那里进行修补无法用于安装/安装(缺少参考) .

即使我只复制了 github 文件夹中的 Autoload.php 文件(看看会发生什么),进一步丢失的引用让我确信 Yii 的预期与我安装的相差甚远。

不幸的是,PEAR 会根据您的 PHP 版本决定要安装哪个版本的 phpunit。由于我使用的是 php5.2.5,因此它将安装的 phpunit 的最高版本是没有 Autoload.php 的版本,即使您使用了 --force --alldeps 选项

向前迈进。

至少升级您的设置 PHP5.3.4

在 \path\to\php\php5.3.4 中运行 go-pear.phar 并接受默认参数

将 PEAR_ENV.reg 添加到注册表

安装phpunit

安装 phpunit/selenium

Wampserver 用户注意事项(重要!!) 升级到 ONLYwampserver 2.1,而不是 2.2! 2.2 似乎没有它的 curl 扩展工作,这在安装 phpunit selenium 时会出现问题。即使使用 Wamp 2.1(我是从 2.0 升级的),您也必须在 php 和 apache 文件夹中的 php.ini 文件中手动启用 curl 扩展(据我测试,PEAR 使用 PHP 的 php.ini 而 phpunit 使用 apache 的 php.ini 文件)。尼)。

即使在通过 php.ini 启用 curl 时,使用 WAMP 2.2 也会出现“并排”配置错误。见链接: Wamp Server 2.2 Windows 7 64-bit and curl not working side-by-side configuration incorrect

为 PHPUnit 安装 Selenium 需要 curl 扩展

考虑到这一切,你应该没有问题!

【讨论】:

我的结语我真的希望有更好的体验。如果一个人不得不通过十几个网站来解决这么多不明显甚至不相关的问题,我认为我们可以同意它会更好。 感谢您的回答!这些书的问题实际上是它们无法考虑到您的开发堆栈中的每一个小变化或错误。 :( 实际上我也遇到了 CURL 和 Wamp 2.2 的问题,这对我有用:***.com/questions/10939248/wamp-php-on-windows-7/… 虽然这很正确,但我仍然觉得这本书应该做得更好。对于像 PEAR 指示下载哪个 phpUnit 版本这样复杂的东西,新人如何开始认为这是绊脚石?在此之前,我阅读了第一本书(使用 PHP5、Packt 的 OOP)并且在设置测试/跟踪时没有问题。我只是觉得他们为了跳过而跳过了不应该跳过的地方。

以上是关于使用 Yii 进行 PHPUnit 敏捷 Web 开发的主要内容,如果未能解决你的问题,请参考以下文章

使用 yii 在 phpunit 中找不到类“CDbTestCase”错误

phpunit,在yii1中使用其他fixture

如何使用 phpunit 模拟 Yii@1.1 的 CActiveRecord(避免空属性)?

Yii 和 PHPUnit 使用 fluent/mockbuilder 模拟会产生奇怪的结果

PHPUnit 测试中 Yii2 中的模拟视图助手

php 安装 yii 报错: phpunit/phpunit 4.8.32 requires ext-dom *