PestPHP로 Laravel 패키지 테스트



PestPHP는 단순성에 중점을 둔 테스트 프레임워크입니다. 이 게시물에서는 기능을 테스트하기 위해 Laravel 패키지 내에서 PestPHP를 사용하는 방법을 설명합니다.

설치



Laravel 패키지를 테스트하기 위해서는 testbench라는 패키지가 필요합니다. Testbench는 https://packages.tools/testbench/getting-started/introduction.html#installation에서 testbench에 대한 자세한 내용을 준비했습니다.

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가 설정되어 있으므로 자유롭게 변경하십시오. 또한 데이터베이스 연결이 테스트로 설정됩니다. 또한 로드할 테스트/단위 내부의 테스트를 설정합니다. 필요에 따라 테스트/기능을 추가합니다.

테스트



그 안에 테스트 폴더를 만들고 Pestp.php 및 TestCase.php 파일 2개를 만듭니다.

TestCase.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__을 사용하여 현재 테스트 디렉토리에서 테스트합니다. 이렇게 하면 테스트의 하위 폴더에서 pest를 실행할 수 있습니다. 즉, Unit 및 Feature가 가장 일반적인 폴더입니다.

다음으로 Unit inside tests라는 폴더를 만들고 DemoTest.php를 사용할 테스트 파일을 만듭니다.

테스트/단위/DemoTest.php

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


가져오기 또는 클래스가 필요하지 않습니다. 최소한의 설정으로 테스트 작성에 집중할 수 있는 Pest의 장점입니다.

여기에서 Laravel 애플리케이션에서 PestPHP 테스트를 작성하는 것과 동일한 방식으로 Pest를 사용하여 테스트를 작성할 수 있습니다.

좋은 웹페이지 즐겨찾기