phug / tester
Phug(前身为Jade)模板渲染测试和覆盖率工具
资助包维护!
kylekatarnls
Open Collective
Tidelift
Requires
- php: >=7.1.0
- ext-xdebug: *
- phpunit/phpunit: ^6.0 || ^7.0 || ^8.0
- phug/renderer: ^0.4.0
Requires (Dev)
- phug/dev-tool: ^0.1.12
README
什么是Phug Tester?
Phug tester 允许您轻松编写Phug模板的单元测试并获得测试覆盖率。
作为 PHPUnit 扩展,您可以在运行 phug-tester
命令时使用所有常用功能和选项以及相同的代码。
安装
通过 Composer 安装
composer require phug/tester
要求
- PHP >= 7.0
- XDebug PHP 扩展
- PHPUnit >= 5.7(通过 composer 自动安装)
用法
./vendor/bin/phug-tester --pug-coverage-threshold=90 --pug-coverage-text --pug-coverage-html=coverage/pug
您可以将它与 PHP 覆盖率数据结合使用,因为 phug-tester 使用 PHPUnit 并且与其所有选项兼容
./vendor/bin/phug-tester --coverage-text --pug-coverage-text --coverage-html=coverage --pug-coverage-html=coverage/pug
这将输出 CLI 中的 PHP 和 Pug 覆盖率摘要,并将 PHP 覆盖率作为 HTML 存储在 coverage 目录中,Pug 覆盖率在子目录 coverage/pug 中。
<?php class MyTemplatesTest extends Phug\Tester\TestCase { public function testContactView() { $html = $this->renderFile('views/contact.pug', [ 'title' => 'Add some locals', ]); self::assertContains('Bar', $html); self::assertNotContains('Foo', $html); } }
需要 Phug\Tester\TestCase
来使用 Pug 工具,如 renderFile
,或者如果您需要在单个命令中获取 PHP 和 Pug 覆盖率。
作为替代,如果您扩展了其他类,可以使用 trait
<?php class MyTemplatesTest extends MyFramerowk\TestCase { use Phug\Tester\TestCaseTrait; }
选项
--pug-coverage-text
如果存在,将在 CLI 标准输出中显示 Pug 覆盖率摘要。
--pug-coverage-html
将覆盖率数据作为 HTML 存储在目录中,您必须指定目录,例如: --pug-coverage-html=/path/to/output/directory
。
--pug-coverage-threshold
将覆盖率率与阈值进行比较,如果未达到阈值,则命令将失败(状态 1),如果达到则成功(状态 0),您必须指定介于 0 和 100 之间的百分比,例如: --pug-coverage-threshold=90
。
配置
当使用 TestCaseTrait
或扩展 TestCase
时,配置方法可用于根据您的应用程序测试需求调整渲染器行为。
getPaths
默认为['views']
,允许您更改模板所在的基目录。getExtensions
默认为['', '.pug', '.jade']
,允许您更改检测为 pug 文件的文件扩展名(以及将自动尝试附加的后缀)。默认值意味着例如,当调用->renderFile('contact')
时,它将查找文件contact
、contact.pug
和contact.jade
。getRenderer
默认为'Phug\Renderer'
,允许您更改要使用的渲染器引擎。它可以是类名(然后它将动态创建)或可以是一个实例,直接使用。但是,如果您返回一个实例,则需要手动设置其选项。getRendererOptions
默认
[ 'extensions' => (array) $this->getExtensions(), 'paths' => (array) $this->getPaths(), 'debug' => true, 'cache_dir' => $cacheDirectory ?: sys_get_temp_dir().'/pug-cache-'.mt_rand(0, 9999999), ]
$cacheDirectory
可以作为方法的一个参数传递。
通过在此方法中返回一个新数组,您将删除并替换所有选项,但通过使用 array_merge
,您可以添加并合并新选项。
例如,要添加共享变量
protected function getRendererOptions($cacheDirectory = null) { return array_merge(parent::getRendererOptions($cacheDirectory), [ 'shared_variables' => [ 'locale' => 'en', 'user' => new User(), ], ]; }