Skip to content

loophp/phpunit-iterable-assertions

Repository files navigation

Latest Stable Version GitHub stars Total Downloads GitHub Workflow Status Type Coverage License Donate!

PHPUnit Iterable Assertions

Description

Provide new assertions for your tests using PHPUnit.

Features

  • assertIdenticalIterable
  • assertNotIdenticalIterable

Installation

composer require --dev loophp/phpunit-iterable-assertions

Usage

<?php

namespace tests;

use loophp\PhpUnitIterableAssertions\Traits\IterableAssertions;
use PHPUnit\Framework\TestCase;

final class MyTest extends TestCase
{
    use IterableAssertions;

    $expected = range('a', 'c');
    $actual = ['a' => 'a', 'b' => 'b', 'c' => 'c'];

    // This will fail: The keys are different.
    self::assertIdenticalIterable(
        $expected,
        $actual
    );

    // This will succeed: Both iterables are different.
    self::assertNotIdenticalIterable(
        $expected,
        $actual
    );
}

Documentation

Code quality, tests, benchmarks

Every time changes are introduced into the library, Github runs the tests.

The library has tests written with PHPunit. Feel free to check them out in the tests directory.

Before each commit, some inspections are executed with GrumPHP; run composer grumphp to check manually.

The quality of the tests is tested with Infection a PHP Mutation testing framework - run composer infection to try it.

Static analyzers are also controlling the code. PHPStan and PSalm are enabled to their maximum level.

Contributing

Feel free to contribute by sending pull requests. We are a usually very responsive team and we will help you going through your pull request from the beginning to the end.

For some reasons, if you can't contribute to the code and willing to help, sponsoring is a good, sound and safe way to show us some gratitude for the hours we invested in this package.

Sponsor me on Github and/or any of [the contributors][6].

Changelog

See CHANGELOG.md for a changelog based on git commits.

For more detailed changelogs, please check the release changelogs.