Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jakzal/phpunit-globals
Allows to use attributes to define global variables in PHPUnit test cases
https://github.com/jakzal/phpunit-globals
annotations attributes env env-vars environment environment-variables globals php phpunit phpunit-extension phpunit-listener test tests
Last synced: about 5 hours ago
JSON representation
Allows to use attributes to define global variables in PHPUnit test cases
- Host: GitHub
- URL: https://github.com/jakzal/phpunit-globals
- Owner: jakzal
- License: mit
- Created: 2018-03-01T15:12:47.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-12-02T11:59:55.000Z (2 months ago)
- Last Synced: 2025-02-01T11:09:42.968Z (7 days ago)
- Topics: annotations, attributes, env, env-vars, environment, environment-variables, globals, php, phpunit, phpunit-extension, phpunit-listener, test, tests
- Language: PHP
- Homepage:
- Size: 148 KB
- Stars: 39
- Watchers: 3
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# PHPUnit Globals
Allows to use attributes to define global variables in PHPUnit test cases.
[![Build](https://github.com/jakzal/phpunit-globals/actions/workflows/build.yml/badge.svg)](https://github.com/jakzal/phpunit-globals/actions/workflows/build.yml)
Supported attributes:
* `#[Env]` for `$_ENV`
* `#[Server]` for `$_SERVER`
* `#[Putenv]` for [`putenv()`](http://php.net/putenv)Supported annotations:
* `@env` and `@unset-env` for `$_ENV`
* `@server` and `@unset-server` for `$_SERVER`
* `@putenv` and `@unset-getenv` for [`putenv()`](http://php.net/putenv)> Annotations are deprecated since v3.1.0 and will be removed in v3.5.0.
> The latest annotation support is planned to be removed is when PHPUnit 12 is released.
> Annotation support is complete, so if you plan on using them keep using v3.4 of this package.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.## Installation
### Composer
```bash
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](https://github.com/jakzal/phpunit-globals/releases).Put the extension in your PHPUnit extensions directory.
Remember to instruct PHPUnit to load extensions in your `phpunit.xml` using the `extensionsDirectory` attribute:```xml
```
## Usage
Enable the globals attribute extension in your PHPUnit configuration:
```xml
```
> If you are using a version before PHP 8.1 you can use the `AnnotationExtension` instead.
Make sure the `AttributeExtension` is **registered before** any other extensions that might depend on global variables.
Global variables can now be defined in attributes:
```php
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:
```php
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 10When updating from a previous version of this extension dedicated to work with PHPUnit 9,
replace the extension registration in `phpunit.xml`:```xml
```with:
```xml
```## Contributing
Please read the [Contributing guide](CONTRIBUTING.md) to learn about contributing to this project.
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms.