2017 © Pedro Peláez
 

library phpunit-globals

Allows to use annotations to define global variables in PHPUnit test cases.

image

zalas/phpunit-globals

Allows to use annotations to define global variables in PHPUnit test cases.

  • Thursday, July 26, 2018
  • by jakzal
  • Repository
  • 1 Watchers
  • 11 Stars
  • 519 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 8 Versions
  • 160 % Grown

The README.md

PHPUnit Globals

Allows to use attributes to define global variables in PHPUnit test cases., (*1)

Build, (*2)

Supported attributes: * #[Env] for $_ENV * #[Server] for $_SERVER * #[Putenv] for putenv(), (*3)

Annotations were previously supported up until v3.5.0 (inclusive). Annotation support is complete, so if you plan on using them keep using v3.5 of this package., (*4)

Global variables are set before each test case is executed, and brought to the original state after each test case has finished. The same applies to putenv()/getenv() calls., (*5)

Installation

Composer

composer require --dev zalas/phpunit-globals

Phar

The extension is also distributed as a PHAR, which can be downloaded from the most recent Github Release., (*6)

Put the extension in your PHPUnit extensions directory. Remember to instruct PHPUnit to load extensions in your phpunit.xml using the extensionsDirectory attribute:, (*7)

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file://./vendor/phpunit/phpunit/phpunit.xsd"
         extensionsDirectory="tools/phpunit.d"
>
</phpunit>

Usage

Enable the globals attribute extension in your PHPUnit configuration:, (*8)


<phpunit ...>

    <!-- ... -->

    <extensions>
        <bootstrap class="Zalas\PHPUnit\Globals\AttributeExtension" />
    </extensions>
</phpunit>

Make sure the AttributeExtension is registered before any other extensions that might depend on global variables., (*9)

Global variables can now be defined in attributes:, (*10)

use PHPUnit\Framework\TestCase;
use Zalas\PHPUnit\Globals\Attribute\Env;
use Zalas\PHPUnit\Globals\Attribute\Server;
use Zalas\PHPUnit\Globals\Attribute\Putenv;

#[Env('FOO', 'bar')]
class ExampleTest extends TestCase
{
    #[Env('APP_ENV', 'foo')]
    #[Env('APP_DEBUG', '0')]
    #[Server('APP_ENV', 'bar')]
    #[Server('APP_DEBUG', '1')]
    #[Putenv('APP_HOST', 'localhost')]
    public function test_global_variables()
    {
        $this->assertSame('bar', $_ENV['FOO']);
        $this->assertSame('foo', $_ENV['APP_ENV']);
        $this->assertSame('0', $_ENV['APP_DEBUG']);
        $this->assertSame('bar', $_SERVER['APP_ENV']);
        $this->assertSame('1', $_SERVER['APP_DEBUG']);
        $this->assertSame('localhost', \getenv('APP_HOST'));
    }
}

It's also possible to mark an attribute with unset so it will not be present in any of the global variables:, (*11)

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    #[Env('APP_ENV', unset: true)]
    #[Server('APP_DEBUG', unset: true)]
    #[Putenv('APP_HOST', unset: true)]
    public function test_global_variables()
    {
        $this->assertArrayNotHasKey('APP_ENV', $_ENV);
        $this->assertArrayNotHasKey('APP_DEBUG', $_SERVER);
        $this->assertArrayNotHasKey('APP_HOST', \getenv());
    }
}

Updating to PHPUnit 10

When updating from a previous version of this extension dedicated to work with PHPUnit 9, replace the extension registration in phpunit.xml:, (*12)

    <extensions>
        <extension class="Zalas\PHPUnit\Globals\AttributeExtension" />
    </extensions>

with:, (*13)

    <extensions>
        <bootstrap class="Zalas\PHPUnit\Globals\AttributeExtension" />
    </extensions>

Contributing

Please read the Contributing guide to learn about contributing to this project. Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms., (*14)

The Versions

26/07 2018

dev-master

9999999-dev

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

26/07 2018

v1.0.5

1.0.5.0

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

07/06 2018

v1.0.4

1.0.4.0

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

04/06 2018

v1.0.3

1.0.3.0

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

31/05 2018

dev-tools-dir

dev-tools-dir

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

24/05 2018

v1.0.2

1.0.2.0

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

01/03 2018

v1.0.1

1.0.1.0

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires

 

01/03 2018

v1.0.0

1.0.0.0

Allows to use annotations to define global variables in PHPUnit test cases.

  Sources   Download

MIT

The Requires