dms/phpunit-arraysubset-asserts

This package provides ArraySubset and related asserts once deprecated in PHPUnit 8

Maintainers

πŸ‘ rdohms

Package info

github.com/rdohms/phpunit-arraysubset-asserts

pkg:composer/dms/phpunit-arraysubset-asserts

Statistics

Installs: 29 023 929

Dependents: 301

Suggesters: 0

Stars: 142

Open Issues: 11

v0.5.0 2023-06-02 17:33 UTC

Requires

  • php: ^5.4 || ^7.0 || ^8.0
  • phpunit/phpunit: ^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT aa6b9e858414e91cca361cac3b2035ee57d212e0

  • Rafael Dohms <rdohms.woop@gmail.com>

README

In PHPUnit 8 the function assertArraySubset was deprecated. This function was often misunderstood and thus removed, but it still holds true as a very useful tool, hence it was extracted here.

Disclaimer: The initial version contained here is copied over from phpunit and is heavily based on the original work by MΓ‘rcio Almada.

Installation

Simply use it by importing it with Composer

composer require --dev dms/phpunit-arraysubset-asserts

πŸ’‘ The package can be safely required on PHP 5.4 to current in combination with PHPUnit 4.8.36/5.7.21 to current.

When the PHPUnit assertArraySubset() method is natively available and not deprecated (PHPUnit 4.x - 7.x), the PHPUnit native functionality will be used. For PHPUnit 8 and higher, the extension will kick in and polyfill the functionality which was removed from PHPUnit.

Usage

You have two options to use this in your classes: either directly as a static call or as a trait if you wish to keep existing references working.

Trait use example

<?php

namespace Your\Package\Tests;

use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
use PHPUnit\Framework\TestCase;

final class ExampleTest extends TestCase
{
 use ArraySubsetAsserts;

 public function testWithTrait(): void
 {
 $expectedSubset = ['bar' => 0];

 $content = ['bar' => '0'];

 self::assertArraySubset($expectedSubset, $content, true);

 $content = ['foo' => '1'];

 $this->assertArraySubset($expectedSubset, $content, true);
 }
}

Static class method example

<?php

namespace Your\Package\Tests;

use DMS\PHPUnitExtensions\ArraySubset\Assert;
use PHPUnit\Framework\TestCase;

final class ExampleTest extends TestCase
{
 public function testWithDirectCall(): void
 {
 $expectedSubset = ['bar' => 0];

 $content = ['bar' => '0'];

 Assert::assertArraySubset($expectedSubset, $content, true);
 }
}