【问题标题】:yii phpunit testing with views in coverageyii phpunit 测试,覆盖范围内的视图
【发布时间】:2013-03-15 12:05:02
【问题描述】:

我的 Yii 应用程序在控制器、模型、组件、模块中获得了 phpunit 覆盖,但没有任何视图。问题是 phpunit 中的代码覆盖率加载器在准备覆盖率报告期间包含视图文件。带有表单的视图调用 $this->beginWidget 会导致崩溃,因为没有 $this 上下文。

视图实际上并没有重要的代码或逻辑,但它们仍然有一些条件甚至循环来调用renderPartial,因此最好将视图代码也包括在内。

这个问题有解决办法吗?

【问题讨论】:

  • 好问题!我希望在框架指南和书籍中更多地强调单元和功能测试,而不是您可以在 10 分钟内学习的标准样板功能。

标签: php unit-testing yii phpunit code-coverage


【解决方案1】:

您是否尝试过扩展CWebTestCase?通常,在编写单元测试时,您有固定装置和东西来提供必要的数据 - 但是对于 Web 应用程序的视图和“功能”测试的测试,通常最容易模仿浏览器并让它在 Web 应用程序上执行操作如果用户实际使用它。目前,这种模仿最容易用 Selenium 完成(在我看来)。

Functional Testing 上的 Yii 指南以及 Selenium Documentation 是一个很好的起点。还有 this book 使用 selenium (我不确定最新版本是否可以,但我知道发布日期:2010 年 8 月 11 日的先前版本),Larry Ullman 的 Yii Book 将有关于测试的章节以及在他完成该章后在功能测试中使用 Selenium。

希望这会有所帮助!

更新进一步解释CWebTestCase

CWebTestCase 扩展了PHPUnit_Extensions_SeleniumTestCase,它直接实现了一个功能测试基础,您可以在 phpunit 中使用它来测试视图、测试视图内的小部件创建、断言文本存在、“单击”链接等。这些测试是仍然从命令行运行,尽管它们要求在运行测试时启动 Selenium-RC 服务器并且它们需要配置有效的浏览器。一个有效的浏览器可以用尽可能少的代码来配置setUp() 函数中的以下代码:

$this->setBrowser('*firefox /usr/lib/firefox/firefox-bin');

CWebTestCase 不能提供代码覆盖率的说法是不正确的,因为 CWebTestCase 扩展了 PHPUnit_Extensions_SeleniumTestCase,它提供了the documentation 中引用的以下内容:

PHPUnit_Extensions_SeleniumTestCase 可以收集代码覆盖率 通过 Selenium 运行的测试信息:

复制PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php 到 您的网络服务器的文档根目录。在你的网络服务器的 php.ini 配置文件,配置

PHPUnit/Extensions/SeleniumTestCase/prepend.phpPHPUnit/Extensions/SeleniumTestCase/append.php

分别为auto_prepend_fileauto_append_file。在你的测试中 扩展PHPUnit_Extensions_SeleniumTestCase的案例类,使用

protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';

phpunit_coverage.php 脚本配置URL。

【讨论】:

  • 我的测试是基于控制台的检查模型和操作,甚至在 html 输出上执行 Xpath 断言。由 phpunit 完成的视图的代码覆盖率报告是问题所在。 Selenium 的代码也不会覆盖视图中的 php 行。
  • 请在下面看到我更新的答案 - 我相信 CWebTestCase 提供了您正在寻找的内容,因为它扩展了 PHPUnit_Extensions_SeleniumTestCase。如果没有,我对您的问题理解不够,很抱歉我无法提供更多帮助。
猜你喜欢
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 2022-06-12
  • 2015-04-20
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多