phug/tester

Phug(前身为Jade)模板渲染测试和覆盖率工具

1.0.0 2019-06-04 19:41 UTC

This package is auto-updated.

Last update: 2024-08-25 07:56:35 UTC


README

什么是Phug Tester?

Phug tester 允许您轻松编写Phug模板的单元测试并获得测试覆盖率。

作为 PHPUnit 扩展,您可以在运行 phug-tester 命令时使用所有常用功能和选项以及相同的代码。

安装

通过 Composer 安装

composer require phug/tester

要求

用法

./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') 时,它将查找文件 contactcontact.pugcontact.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(),
        ],
    ];
}