PestPHP 是一个专注于简单性的测试框架,在这篇文章中,Q9源码网将解释如何在 Laravel 包中使用 PestPHP 来测试它的功能。

安装

为了测试 Laravel 包,需要一个名为 testbench 的包。测试平台在https://packages.tools/testbench/getting-started/introduction.html#installation准备了更多关于测试平台的信息

安装 testbench 和 PestPHP 包

composer require orchestra/testbench --dev
composer require pestphp/pest --dev
composer require pestphp/pest-plugin-laravel --dev

设置测试环境

在 composer.json 中自动加载测试目录,我使用 Dcblogdev\\PackageName 来表示供应商用户名和存储库名称。

"autoload": {
    "psr-4": {
        "Dcblogdev\\PackageName\\": "src/",
        "Dcblogdev\\PackageName\\Tests\\": "tests"
    }
},

这将在包的根目录自动加载测试目录。

接下来,创建一个名为 phpunit.xml 的文件。 

<?xml version="1.0" encoding="UTF-8"?>
<phpunit
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  bootstrap="vendor/autoload.php"
  backupGlobals="false"
  backupStaticAttributes="false"
  colors="true"
  verbose="true"
  convertErrorsToExceptions="true"
  convertNoticesToExceptions="true"
  convertWarningsToExceptions="true"
  processIsolation="false"
  stopOnFailure="false"
  xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
>
  <coverage>
    <include>
      <directory suffix=".php">src/</directory>
    </include>
  </coverage>
  <testsuites>
    <testsuite name="Unit">
      <directory suffix="Test.php">./tests/Unit</directory>
    </testsuite>
  </testsuites>
  <php>
    <env name="DB_CONNECTION" value="testing"/>
    <env name="APP_KEY" value="base64:2fl+Ktvkfl+Fuz4Qp/A75G2RTiWVA/ZoKZvp6fiiM10="/>
  </php>
</phpunit>

这里设置了一个 APP_KEY,请随意更改。此外,数据库连接设置为测试。这也设置了要加载的测试/单元内的测试。根据需要添加测试/功能。

测试

在其中创建一个测试文件夹,创建 2 个文件 Pestp.php 和 TestCase.php

测试用例.php

<?php

namespace Dcblogdev\PackageName\Tests;

use Orchestra\Testbench\TestCase as Orchestra;
use Dcblogdev\PackageName\PackageNameServiceProvider;

class TestCase extends Orchestra
{
    protected function getPackageProviders($app)
    {
        return [
            PackageNameServiceProvider::class,
        ];
    }
}

 这会加载包服务提供者。

害虫.php

<?php

use Dcblogdev\PackageName\Tests\TestCase;

uses(TestCase::class)->in(__DIR__);

在 Pest.php 中设置任何自定义测试助手。这将加载 TestCase 并使用 __DIR__ 在当前测试目录中进行测试,这允许害虫在测试的子文件夹中运行,即 Unit 和 Feature 是最常见的文件夹。

接下来,在测试中创建一个名为 Unit 的文件夹并创建一个测试文件,我将使用 DemoTest.php

测试/单元/DemoTest.php

test('confirm environment is set to testing', function () {
    expect(config('app.env'))->toBe('testing');
});

不需要导入或类。这就是 Pest 的优点,您可以专注于编写测试,只需最少的设置。

从这里你可以使用 Pest 编写测试,就像在 Laravel 应用程序中编写 PestPHP 测试一样。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。