vielhuber/comparehelper

small php helper for comparing api responses in your tests.

Installs: 402

Dependents: 1

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/vielhuber/comparehelper

1.1.3 2025-12-09 09:35 UTC

This package is auto-updated.

Last update: 2025-12-09 09:35:45 UTC


README

build status

📑 comparehelper 📑

comparehelper is a small php helper for comparing api responses in your tests.

installation

install once with composer:

composer require vielhuber/comparehelper

then add this to your files:

require __DIR__ . '/vendor/autoload.php';
use vielhuber\comparehelper\comparehelper;

usage

CompareHelper::compare($var1, $var2); // true|false

you can use the following placeholders:

  • *: any datatype
  • #STR#: any string
  • #INT#: any numeric value

examples

CompareHelper::compare('foo', 'foo'); // true

CompareHelper::compare(42, 42); // true

CompareHelper::compare(
    [
        'foo' => 'bar'
    ],
    [
        'foo' => 'bar',
        'foo2' => 'bar'
    ]
); // false

CompareHelper::compare(
    [
        'foo' => 'bar',
        'bar' => ['baz', 42]
    ],
    [
        '#STR' => '*',
        'bar' => ['#STR#', '#INT#']
    ]
); // true

// ordering is lazy
CompareHelper::compare(['foo', 'bar'], ['bar', 'foo']); // true
CompareHelper::compare(['#INT#', '#STR#'], [42, 'foo']); // true
CompareHelper::compare(['#INT#', '#STR#'], ['foo', 42]); // false
CompareHelper::compare(['foo' => 7, 'bar' => 42], ['bar' => 42, 'foo' => 7]); // true
CompareHelper::compare(['#INT#' => 7, '#STR#' => 42], [7 => 7, 'foo' => 42]); // true
CompareHelper::compare(['#INT#' => 7, '#STR#' => 42], ['foo' => 42, 7 => 7]); // false

// datatypes are strict
CompareHelper::compare(42, '42'); // false

phpunit integration

for better diff output in tests, use assertEquals() instead of compare():

// instead of:
$this->assertTrue(CompareHelper::compare($expected, $actual));

// use this for better diffs:
CompareHelper::assertEquals($expected, $actual);

// example:
CompareHelper::assertEquals(['id' => '#INT#', 'name' => '#STR#', 'status' => 'active'], $apiResponse);