Spec-Zone.ru › PHPUnit

Утверждения

В этом приложении перечислены различные доступные методы утверждений.

Статическое и нестатическое использование методов утверждений

Утверждения PHPUnit реализованы в PHPUnit\Framework\Assert. PHPUnit\Framework\TestCase наследуется от PHPUnit\Framework\Assert.

Методы утверждений объявлены статическими, поэтому их можно вызывать из любого контекста, например, с помощью PHPUnit\Framework\Assert::assertTrue(), или с помощью $this->assertTrue() либо self::assertTrue(), например, в классе, расширяющем PHPUnit\Framework\TestCase. Можно даже использовать глобальные функции-обертки, например assertTrue().

Часто задаваемый вопрос, особенно от разработчиков, недавно начавших пользоваться PHPUnit: является ли использование, например, $this->assertTrue() или self::assertTrue(), «правильным способом» вызова утверждения. Краткий ответ: правильного способа нет. Но и неправильного тоже нет. Это дело личных предпочтений.

Большинству просто «кажется правильным» использовать $this->assertTrue(), поскольку метод теста вызывается у объекта теста. Тот факт, что методы утверждений объявлены статическими, позволяет (повторно) использовать их вне контекста объекта теста. Наконец, глобальные функции-обертки позволяют разработчикам набирать меньше символов (assertTrue() вместо $this->assertTrue() или self::assertTrue()).

Логические значения

assertTrue()

assertTrue(bool $condition[, string $message])

Сообщает об ошибке, обозначенной $message, если $condition равно false.

assertNotTrue() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.1 Использование assertTrue()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class TrueTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertTrue(false);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/TrueTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) TrueTest::testFailure
Failed asserting that false is true.

/path/to/tests/TrueTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertFalse()

assertFalse(bool $condition[, string $message])

Сообщает об ошибке, обозначенной $message, если $condition равно true.

assertNotFalse() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.2 Использование assertFalse()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class FalseTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertFalse(true);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/FalseTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) FalseTest::testFailure
Failed asserting that true is false.

/path/to/tests/FalseTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Идентичность

assertSame()

assertSame(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две переменные $expected и $actual не имеют одинаковых типов и значений.

assertNotSame() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.3 Использование assertSame()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class SameWithMixedTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertSame('2204', 2204);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/SameWithMixedTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) SameWithMixedTest::testFailure
Failed asserting that 2204 is identical to '2204'.

/path/to/tests/SameWithMixedTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertSame(object $expected, object $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две переменные $expected и $actual не ссылаются на один и тот же объект.

Пример 1.4 Использование assertSame() с объектами
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class SameWithObjectsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertSame(new stdClass, new stdClass);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/SameWithObjectsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) SameWithObjectsTest::testFailure
Failed asserting that two variables reference the same object.

/path/to/tests/SameWithObjectsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Идентичность проверяется с помощью оператора ===.

assertArraysAreIdentical()

assertArraysAreIdentical(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не идентичны. Массивы должны содержать одинаковые пары «ключ—значение» в одинаковом порядке. Ключи и значения сравниваются строго (===).

Пример 1.5 Использование assertArraysAreIdentical()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysAreIdenticalTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysAreIdentical(
            ['a' => 1, 'b' => 2],
            ['a' => 1, 'b' => '2'],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysAreIdenticalTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysAreIdenticalTest::testFailure
Failed asserting that two arrays are identical.
--- Expected
+++ Actual
@@ @@
 Array &0 [
     'a' => 1,
-    'b' => 2,
+    'b' => '2',
 ]

/path/to/tests/ArraysAreIdenticalTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArraysAreIdenticalIgnoringOrder()

assertArraysAreIdenticalIgnoringOrder(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не идентичны при игнорировании порядка элементов. Массивы должны содержать одинаковые пары «ключ—значение», но порядок элементов не имеет значения. Ключи и значения сравниваются строго (===).

Пример 1.6 Использование assertArraysAreIdenticalIgnoringOrder()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysAreIdenticalIgnoringOrderTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysAreIdenticalIgnoringOrder(
            ['a' => 1, 'b' => 2],
            ['b' => 2, 'a' => '1'],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysAreIdenticalIgnoringOrderTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysAreIdenticalIgnoringOrderTest::testFailure
Failed asserting that two arrays are identical while ignoring order.
--- Expected
+++ Actual
@@ @@
 Array &0 [
-    'a' => 1,
     'b' => 2,
+    'a' => '1',
 ]

/path/to/tests/ArraysAreIdenticalIgnoringOrderTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArraysHaveIdenticalValues()

assertArraysHaveIdenticalValues(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не содержат идентичных значений. Ключи массивов игнорируются; сравниваются только значения, причем в порядке следования. Значения сравниваются строго (===).

Пример 1.7 Использование assertArraysHaveIdenticalValues()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysHaveIdenticalValuesTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysHaveIdenticalValues(
            [1, 2, 3],
            [1, '2', 3],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysHaveIdenticalValuesTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysHaveIdenticalValuesTest::testFailure
Failed asserting that two arrays are identical while ignoring keys.
--- Expected
+++ Actual
@@ @@
 Array &0 [
     0 => 1,
-    1 => 2,
+    1 => '2',
     2 => 3,
 ]

/path/to/tests/ArraysHaveIdenticalValuesTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArraysHaveIdenticalValuesIgnoringOrder()

assertArraysHaveIdenticalValuesIgnoringOrder(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не содержат идентичных значений при игнорировании порядка элементов. Ключи массивов игнорируются; сравниваются только значения, а их порядок не имеет значения. Значения сравниваются строго (===).

Пример 1.8 Использование assertArraysHaveIdenticalValuesIgnoringOrder()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysHaveIdenticalValuesIgnoringOrderTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysHaveIdenticalValuesIgnoringOrder(
            [1, 2, 3],
            [3, '2', 1],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysHaveIdenticalValuesIgnoringOrderTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysHaveIdenticalValuesIgnoringOrderTest::testFailure
Failed asserting that two arrays are identical while ignoring keys and order.
--- Expected
+++ Actual
@@ @@
 Array &0 [
-    0 => 1,
-    1 => 2,
-    2 => 3,
+    0 => 3,
+    1 => '2',
+    2 => 1,
 ]

/path/to/tests/ArraysHaveIdenticalValuesIgnoringOrderTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArrayIsIdenticalToArrayOnlyConsideringListOfKeys()

assertArrayIsIdenticalToArrayOnlyConsideringListOfKeys(array $expected, array $actual, array $keysToBeConsidered[, string $message])

Сообщает об ошибке, обозначенной $message, если два массива не идентичны при учете только тех элементов массива, ключи которых были указаны.

Пример 1.9 Использование assertArrayIsIdenticalToArrayOnlyConsideringListOfKeys()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayIsIdenticalToArrayOnlyConsideringListOfKeysTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArrayIsIdenticalToArrayOnlyConsideringListOfKeys(
            [
                'timestamp' => time(),
                'foo'       => 'bar',
            ],
            [
                'timestamp' => time(),
                'foo'       => 'baz',
            ],
            [
                'foo',
            ],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArrayIsIdenticalToArrayOnlyConsideringListOfKeysTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayIsIdenticalToArrayOnlyConsideringListOfKeysTest::testFailure
Failed asserting that two arrays are identical.
--- Expected
+++ Actual
@@ @@
 Array &0 [
-    'foo' => 'bar',
+    'foo' => 'baz',
 ]

/path/to/tests/ArrayIsIdenticalToArrayOnlyConsideringListOfKeysTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArrayIsIdenticalToArrayIgnoringListOfKeys()

assertArrayIsIdenticalToArrayIgnoringListOfKeys(array $expected, array $actual, array $keysToBeIgnored[, string $message])

Сообщает об ошибке, обозначенной $message, если два массива не идентичны при игнорировании только тех элементов массива, ключи которых были указаны.

Пример 1.10 Использование assertArrayIsIdenticalToArrayIgnoringListOfKeys()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayIsIdenticalToArrayIgnoringListOfKeysTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArrayIsIdenticalToArrayIgnoringListOfKeys(
            [
                'timestamp' => time(),
                'foo'       => 'bar',
            ],
            [
                'timestamp' => time(),
                'foo'       => 'baz',
            ],
            [
                'timestamp',
            ],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArrayIsIdenticalToArrayIgnoringListOfKeysTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayIsIdenticalToArrayIgnoringListOfKeysTest::testFailure
Failed asserting that two arrays are identical.
--- Expected
+++ Actual
@@ @@
 Array &0 [
-    'foo' => 'bar',
+    'foo' => 'baz',
 ]

/path/to/tests/ArrayIsIdenticalToArrayIgnoringListOfKeysTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Равенство

assertEquals()

assertEquals(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две переменные $expected и $actual не равны.

assertNotEquals() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.11 Использование assertEquals()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertEquals(1, 0);
    }

    public function testFailure2(): void
    {
        $this->assertEquals('bar', 'baz');
    }

    public function testFailure3(): void
    {
        $this->assertEquals("foo\nbar\nbaz\n", "foo\nbah\nbaz\n");
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

FFF                                                                 3 / 3 (100%)

Time: 00:00.001, Memory: 28.00 MB

There were 3 failures:

1) EqualsTest::testFailure
Failed asserting that 0 matches expected 1.

/path/to/tests/EqualsTest.php:8

2) EqualsTest::testFailure2
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'bar'
+'baz'

/path/to/tests/EqualsTest.php:13

3) EqualsTest::testFailure3
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
 'foo\n
-bar\n
+bah\n
 baz\n
 '

/path/to/tests/EqualsTest.php:18

FAILURES!
Tests: 3, Assertions: 3, Failures: 3.

Равенство проверяется с помощью оператора ==, однако для некоторых типов аргументов $expected и $actual используются более специализированные сравнения; см. ниже.

assertEquals(DateTimeInterface $expected, DateTimeInterface $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если два момента времени, представленные объектами DateTimeInterface $expected и $actual, не равны.

Пример 1.12 Использование assertEquals() с объектами DateTimeImmutable
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithDateTimeImmutableTest extends TestCase
{
    public function testFailure(): void
    {
        $expected = new DateTimeImmutable('2023-02-23 01:23:45');
        $actual   = new DateTimeImmutable('2023-02-23 01:23:46');

        $this->assertEquals($expected, $actual);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithDateTimeImmutableTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithDateTimeImmutableTest::testFailure
Failed asserting that two DateTime objects are equal.
--- Expected
+++ Actual
@@ @@
-2023-02-23T01:23:45.000000+0100
+2023-02-23T01:23:46.000000+0100

/path/to/tests/EqualsWithDateTimeImmutableTest.php:11

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertEquals(DOMDocument $expected, DOMDocument $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если канонические формы XML-документов без комментариев, представленных двумя объектами DOMDocument $expected и $actual, не равны.

Пример 1.13 Использование assertEquals() с объектами DOMDocument
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithDomDocumentTest extends TestCase
{
    public function testFailure(): void
    {
        $expected = new DOMDocument;
        $expected->loadXML('<foo><bar/></foo>');

        $actual = new DOMDocument;
        $actual->loadXML('<bar><foo/></bar>');

        $this->assertEquals($expected, $actual);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithDomDocumentTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithDomDocumentTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
-<foo>
-  <bar/>
-</foo>
+<bar>
+  <foo/>
+</bar>

/path/to/tests/EqualsWithDomDocumentTest.php:14

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertEquals(object $expected, object $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если значения свойств двух объектов $expected и $actual не равны.

Пример 1.14 Использование assertEquals() с объектами
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithObjectsTest extends TestCase
{
    public function testFailure(): void
    {
        $expected      = new stdClass;
        $expected->foo = 'foo';
        $expected->bar = 'bar';

        $actual      = new stdClass;
        $actual->foo = 'bar';
        $actual->baz = 'bar';

        $this->assertEquals($expected, $actual);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithObjectsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithObjectsTest::testFailure
Failed asserting that two objects are equal.
--- Expected
+++ Actual
@@ @@
 stdClass Object (
-    'foo' => 'foo'
-    'bar' => 'bar'
+    'foo' => 'bar'
+    'baz' => 'bar'
 )

/path/to/tests/EqualsWithObjectsTest.php:16

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertEquals(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если два массива $expected и $actual не равны.

Пример 1.15 Использование assertEquals() с массивами
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithArraysTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertEquals(['a', 'b', 'c'], ['a', 'c', 'd']);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithArraysTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithArraysTest::testFailure
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
     0 => 'a'
-    1 => 'b'
-    2 => 'c'
+    1 => 'c'
+    2 => 'd'
 )

/path/to/tests/EqualsWithArraysTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertEqualsCanonicalizing()

assertEqualsCanonicalizing(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две переменные $expected и $actual не равны.

Содержимое $expected и $actual приводится к каноническому виду перед сравнением. Например, если две переменные $expected и $actual являются массивами, перед сравнением эти массивы сортируются. Если $expected и $actual являются объектами, каждый объект преобразуется в массив, содержащий все закрытые, защищенные и открытые свойства.

assertNotEqualsCanonicalizing() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.16 Использование assertEqualsCanonicalizing()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithArraysCanonicalizingTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertEqualsCanonicalizing([3, 2, 1], [2, 3, 0, 1]);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithArraysCanonicalizingTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithArraysCanonicalizingTest::testFailure
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
+    0
     1
     2
     3
 )

/path/to/tests/EqualsWithArraysCanonicalizingTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertEqualsIgnoringCase()

assertEqualsIgnoringCase(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две переменные $expected и $actual не равны.

При сравнении $expected и $actual различия в регистре игнорируются.

assertNotEqualsIgnoringCase() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.17 Использование assertEqualsIgnoringCase()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithStringsIgnoringCaseTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertEqualsIgnoringCase('foo', 'BAR');
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithStringsIgnoringCaseTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithStringsIgnoringCaseTest::testFailure
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'foo'
+'BAR'

/path/to/tests/EqualsWithStringsIgnoringCaseTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertEqualsWithDelta()

assertEqualsWithDelta(mixed $expected, mixed $actual, float $delta[, string $message])

Сообщает об ошибке, обозначенной $message, если абсолютная разница между $expected и $actual больше $delta.

Чтобы понять, почему необходимо $delta, прочитайте «Что должен знать каждый специалист по информатике об арифметике с плавающей точкой».

assertNotEqualsWithDelta() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.18 Использование assertEqualsWithDelta()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EqualsWithFloatsAndDeltaTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertEqualsWithDelta(1.0, 1.5, 0.1);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/EqualsWithFloatsAndDeltaTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EqualsWithFloatsAndDeltaTest::testFailure
Failed asserting that 1.5 matches expected 1.0.

/path/to/tests/EqualsWithFloatsAndDeltaTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertObjectEquals()

assertObjectEquals(object $expected, object $actual, string $method = 'equals'[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не равен $expected согласно $actual->$method($expected).

Использовать assertEquals() (и его обратный вариант, assertNotEquals()) для объектов без регистрации пользовательского компаратора, определяющего способ сравнения объектов, — плохая практика. Однако реализация пользовательского компаратора для каждого объекта, который требуется проверять в тестах, в лучшем случае неудобна.

Чаще всего пользовательские компараторы применяются для объектов-значений. Обычно у таких объектов есть метод equals(self $other): bool (или аналогичный метод с другим именем), предназначенный для сравнения двух экземпляров типа объекта-значения. assertObjectEquals() упрощает пользовательское сравнение объектов в этом распространенном случае:

assertObjectNotEquals() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.19 Использование assertObjectEquals()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ObjectEqualsTest extends TestCase
{
    public function testSomething(): void
    {
        $a = new Email('user@example.org');
        $b = new Email('user@example.org');
        $c = new Email('user@example.com');

        // This passes
        $this->assertObjectEquals($a, $b);

        // This fails
        $this->assertObjectEquals($a, $c);
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ObjectEqualsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ObjectEqualsTest::testSomething
Failed asserting that two objects are equal.

/path/to/tests/ObjectEqualsTest.php:16

FAILURES!
Tests: 1, Assertions: 2, Failures: 1.
Пример 1.20 Объект-значение Email с методом equals()
<?php declare(strict_types=1);
final class Email
{
    private string $email;

    public function __construct(string $email)
    {
        $this->ensureIsValidEmail($email);

        $this->email = $email;
    }

    public function asString(): string
    {
        return $this->email;
    }

    public function equals(self $other): bool
    {
        return $this->asString() === $other->asString();
    }

    private function ensureIsValidEmail(string $email): void
    {
        // ...
    }
}

Обратите внимание:

  • У объекта $actual должен существовать метод с именем $method

  • Метод должен принимать ровно один аргумент

  • Для соответствующего параметра должен быть объявлен тип

  • Объект $expected должен соответствовать объявленному типу

  • Для метода должен быть объявлен тип возвращаемого значения bool

Если хотя бы одно из перечисленных выше условий не выполнено или если $actual->$method($expected) возвращает false, утверждение завершается неудачей.

assertFileEquals()

assertFileEquals(string $expected, string $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если содержимое файла, указанного в $expected, отличается от содержимого файла, указанного в $actual.

assertFileNotEquals() является обратным для этого утверждения и принимает те же аргументы.

assertFileEqualsCanonicalizing() (и assertFileNotEqualsCanonicalizing()), а также assertFileEqualsIgnoringCase() (и assertFileNotEqualsIgnoringCase()) выполняют для файлов те же действия, что assertEqualsCanonicalizing() (и assertNotEqualsCanonicalizing()), а также assertEqualsIgnoringCase() (и assertNotEqualsIgnoringCase()) для строк.

Пример 1.21 Использование assertFileEquals()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class FileEqualsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertFileEquals(
            __DIR__ . '/expected.txt',
            __DIR__ . '/actual.txt',
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/FileEqualsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) FileEqualsTest::testFailure
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'expected\n
+'actual\n
 '

/path/to/tests/FileEqualsTest.php:8

FAILURES!
Tests: 1, Assertions: 5, Failures: 1.

assertFileEqualsFileIgnoringWhitespace()

assertFileEqualsFileIgnoringWhitespace(string $expected, string $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если содержимое файла, указанного в $expected, отличается от содержимого файла, указанного в $actual (без учета различий в пробельных символах). Перед сравнением все последовательности пробельных символов заменяются одним пробелом, а пробельные символы в начале и конце удаляются.

assertFileNotEqualsFileIgnoringWhitespace() является обратным для этого утверждения и принимает те же аргументы.

Пример 1.22 Использование assertFileEqualsFileIgnoringWhitespace()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class FileEqualsFileIgnoringWhitespaceTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertFileEqualsFileIgnoringWhitespace(
            __DIR__ . '/expected.txt',
            __DIR__ . '/actual.txt',
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/FileEqualsFileIgnoringWhitespaceTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) FileEqualsFileIgnoringWhitespaceTest::testFailure
Failed asserting that 'actual\n
' is equal to "expected" ignoring whitespace.

/path/to/tests/FileEqualsFileIgnoringWhitespaceTest.php:8

FAILURES!
Tests: 1, Assertions: 5, Failures: 1.

assertArraysAreEqual()

assertArraysAreEqual(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не равны. Массивы должны содержать одинаковые пары «ключ—значение» в одинаковом порядке. Ключи и значения сравниваются нестрого (==).

Пример 1.23 Использование assertArraysAreEqual()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysAreEqualTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysAreEqual(
            ['a' => 1, 'b' => 2],
            ['a' => 1, 'b' => 3],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysAreEqualTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysAreEqualTest::testFailure
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array &0 [
     'a' => 1,
-    'b' => 2,
+    'b' => 3,
 ]

/path/to/tests/ArraysAreEqualTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArraysAreEqualIgnoringOrder()

assertArraysAreEqualIgnoringOrder(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не равны при игнорировании порядка элементов. Массивы должны содержать одинаковые пары «ключ—значение», но порядок элементов не имеет значения. Ключи и значения сравниваются нестрого (==).

Пример 1.24 Использование assertArraysAreEqualIgnoringOrder()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysAreEqualIgnoringOrderTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysAreEqualIgnoringOrder(
            ['a' => 1, 'b' => 2],
            ['b' => 2, 'a' => 3],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysAreEqualIgnoringOrderTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysAreEqualIgnoringOrderTest::testFailure
Failed asserting that two arrays are equal while ignoring order.
--- Expected
+++ Actual
@@ @@
 Array &0 [
-    'a' => 1,
     'b' => 2,
+    'a' => 3,
 ]

/path/to/tests/ArraysAreEqualIgnoringOrderTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArraysHaveEqualValues()

assertArraysHaveEqualValues(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не содержат равных значений. Ключи массивов игнорируются; сравниваются только значения, причем в порядке следования. Значения сравниваются нестрого (==).

Пример 1.25 Использование assertArraysHaveEqualValues()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysHaveEqualValuesTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysHaveEqualValues(
            [1, 2, 3],
            [1, 4, 3],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysHaveEqualValuesTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysHaveEqualValuesTest::testFailure
Failed asserting that two arrays are equal while ignoring keys.
--- Expected
+++ Actual
@@ @@
 Array &0 [
     0 => 1,
-    1 => 2,
+    1 => 4,
     2 => 3,
 ]

/path/to/tests/ArraysHaveEqualValuesTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArraysHaveEqualValuesIgnoringOrder()

assertArraysHaveEqualValuesIgnoringOrder(array $expected, array $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $expected и $actual не содержат равных значений при игнорировании порядка элементов. Ключи массивов игнорируются; сравниваются только значения, а их порядок не имеет значения. Значения сравниваются нестрого (==).

Пример 1.26 Использование assertArraysHaveEqualValuesIgnoringOrder()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArraysHaveEqualValuesIgnoringOrderTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArraysHaveEqualValuesIgnoringOrder(
            [1, 2, 3],
            [3, 4, 1],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArraysHaveEqualValuesIgnoringOrderTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArraysHaveEqualValuesIgnoringOrderTest::testFailure
Failed asserting that two arrays are equal while ignoring keys and order.
--- Expected
+++ Actual
@@ @@
 Array &0 [
-    0 => 1,
-    1 => 2,
-    2 => 3,
+    0 => 3,
+    1 => 4,
+    2 => 1,
 ]

/path/to/tests/ArraysHaveEqualValuesIgnoringOrderTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArrayIsEqualToArrayOnlyConsideringListOfKeys()

assertArrayIsEqualToArrayOnlyConsideringListOfKeys(array $expected, array $actual, array $keysToBeConsidered[, string $message])

Сообщает об ошибке, обозначенной $message, если два массива не равны при учете только тех элементов массива, ключи которых были указаны.

Пример 1.27 Использование assertArrayIsEqualToArrayOnlyConsideringListOfKeys()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayIsEqualToArrayOnlyConsideringListOfKeysTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArrayIsEqualToArrayOnlyConsideringListOfKeys(
            [
                'timestamp' => time(),
                'foo'       => 'bar',
            ],
            [
                'timestamp' => time(),
                'foo'       => 'baz',
            ],
            [
                'foo',
            ],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArrayIsEqualToArrayOnlyConsideringListOfKeysTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayIsEqualToArrayOnlyConsideringListOfKeysTest::testFailure
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
-    'foo' => 'bar'
+    'foo' => 'baz'
 )

/path/to/tests/ArrayIsEqualToArrayOnlyConsideringListOfKeysTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertArrayIsEqualToArrayIgnoringListOfKeys()

assertArrayIsEqualToArrayIgnoringListOfKeys(array $expected, array $actual, array $keysToBeIgnored[, string $message])

Сообщает об ошибке, обозначенной $message, если два массива не равны при игнорировании только тех элементов массива, ключи которых были указаны.

Пример 1.28 Использование assertArrayIsEqualToArrayIgnoringListOfKeys()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayIsEqualToArrayIgnoringListOfKeysTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArrayIsEqualToArrayIgnoringListOfKeys(
            [
                'timestamp' => time(),
                'foo'       => 'bar',
            ],
            [
                'timestamp' => time(),
                'foo'       => 'baz',
            ],
            [
                'timestamp',
            ],
        );
    }
}

Запуск приведенного выше теста дает следующий результат:

./tools/phpunit tests/ArrayIsEqualToArrayIgnoringListOfKeysTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayIsEqualToArrayIgnoringListOfKeysTest::testFailure
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
-    'foo' => 'bar'
+    'foo' => 'baz'
 )

/path/to/tests/ArrayIsEqualToArrayIgnoringListOfKeysTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Итерируемые объекты

assertArrayHasKey()

assertArrayHasKey(int|string $key, array|ArrayAccess $array[, string $message])

Сообщает об ошибке, идентифицированной $message, если в $array отсутствует ключ $key.

assertArrayNotHasKey() является противоположным утверждением и принимает те же аргументы.

Пример 1.29 Использование assertArrayHasKey()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayHasKeyTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertArrayHasKey('foo', ['bar' => 'baz']);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ArrayHasKeyTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayHasKeyTest::testFailure
Failed asserting that an array has the key 'foo'.

/path/to/tests/ArrayHasKeyTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContains()

assertContains(mixed $needle, iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $needle не является элементом $haystack.

assertNotContains() является противоположным утверждением и принимает те же аргументы.

Пример 1.30 Использование assertContains()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContains(4, [1, 2, 3]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsTest::testFailure
Failed asserting that an array contains 4.

/path/to/tests/ContainsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Проверка того, является ли $needle элементом $haystack, выполняется с помощью оператора ===. Если требуется логика сравнения, реализованная оператором ==, можно использовать assertContainsEquals() (и assertNotContainsEquals()).

assertContainsOnly()

assertContainsOnly(string $type, iterable $haystack[, boolean $isNativeType = null, string $message = ''])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа $type.

$isNativeType — это флаг, указывающий, является ли $type встроенным типом PHP.

Если $isNativeType имеет значение true, для $type поддерживаются следующие строки: array, bool, boolean, callable, double, float, int, integer, iterable, null, numeric, object, real, resource, scalar или string.

assertNotContainsOnly() является противоположным утверждением и принимает те же аргументы.

Пример 1.31 Использование assertContainsOnly()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnly('string', ['1', '2', 3]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

E                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 error:

1) ContainsOnlyTest::testFailure
Error: Call to undefined method ContainsOnlyTest::assertContainsOnly()

/path/to/tests/ContainsOnlyTest.php:8

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

Устаревший метод: assertContainsOnly() считается устаревшим

Начиная с PHPUnit 12.0 метод assertContainsOnly() официально признан устаревшим. Использование этого метода вызовет предупреждение об устаревании. Метод будет удалён в PHPUnit 13.

assertContainsOnlyArray()

assertContainsOnlyArray(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа array.

assertContainsNotOnlyArray() является противоположным утверждением и принимает те же аргументы.

Пример 1.32 Использование assertContainsOnlyArray()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyArrayTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyArray([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyArrayTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyArrayTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "array".

/path/to/tests/ContainsOnlyArrayTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyBool()

assertContainsOnlyBool(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа bool.

assertContainsNotOnlyBool() является противоположным утверждением и принимает те же аргументы.

Пример 1.33 Использование assertContainsOnlyBool()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyBoolTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyBool([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyBoolTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyBoolTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "bool".

/path/to/tests/ContainsOnlyBoolTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyCallable()

assertContainsOnlyCallable(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа callable.

assertContainsNotOnlyCallable() является противоположным утверждением и принимает те же аргументы.

Пример 1.34 Использование assertContainsOnlyCallable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyCallableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyCallable([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyCallableTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyCallableTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "callable".

/path/to/tests/ContainsOnlyCallableTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyFloat()

assertContainsOnlyFloat(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа float.

assertContainsNotOnlyFloat() является противоположным утверждением и принимает те же аргументы.

Пример 1.35 Использование assertContainsOnlyFloat()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyFloatTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyFloat([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyFloatTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyFloatTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "float".

/path/to/tests/ContainsOnlyFloatTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyInt()

assertContainsOnlyInt(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа int.

assertContainsNotOnlyInt() является противоположным утверждением и принимает те же аргументы.

Пример 1.36 Использование assertContainsOnlyInt()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyIntTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyInt([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyIntTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyIntTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "int".

/path/to/tests/ContainsOnlyIntTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyIterable()

assertContainsOnlyIterable(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа iterable.

assertContainsNotOnlyIterable() является противоположным утверждением и принимает те же аргументы.

Пример 1.37 Использование assertContainsOnlyIterable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyIterableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyIterable([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyIterableTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyIterableTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "iterable".

/path/to/tests/ContainsOnlyIterableTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyNull()

assertContainsOnlyNull(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа null.

assertContainsNotOnlyNull() является противоположным утверждением и принимает те же аргументы.

Пример 1.38 Использование assertContainsOnlyNull()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyNullTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyNull(['string']);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyNullTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyNullTest::testFailure
Failed asserting that Array &0 [
    0 => 'string',
] contains only values of type "null".

/path/to/tests/ContainsOnlyNullTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyNumeric()

assertContainsOnlyNumeric(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа numeric.

assertContainsNotOnlyNumeric() является противоположным утверждением и принимает те же аргументы.

Пример 1.39 Использование assertContainsOnlyNumeric()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyNumericTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyNumeric([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyNumericTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyNumericTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "numeric".

/path/to/tests/ContainsOnlyNumericTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyObject()

assertContainsOnlyObject(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа object.

assertContainsNotOnlyObject() является противоположным утверждением и принимает те же аргументы.

Пример 1.40 Использование assertContainsOnlyObject()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyObjectTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyObject([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyObjectTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyObjectTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "object".

/path/to/tests/ContainsOnlyObjectTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyResource()

assertContainsOnlyResource(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа resource.

assertContainsNotOnlyResource() является противоположным утверждением и принимает те же аргументы.

Пример 1.41 Использование assertContainsOnlyResource()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyResourceTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyResource([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyResourceTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyResourceTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "resource".

/path/to/tests/ContainsOnlyResourceTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyClosedResource()

assertContainsOnlyClosedResource(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа resource (closed).

assertContainsNotOnlyClosedResource() является противоположным утверждением и принимает те же аргументы.

Пример 1.42 Использование assertContainsOnlyClosedResource()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyClosedResourceTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyClosedResource([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyClosedResourceTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyClosedResourceTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "resource (closed)".

/path/to/tests/ContainsOnlyClosedResourceTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyScalar()

assertContainsOnlyScalar(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа scalar.

assertContainsNotOnlyScalar() является противоположным утверждением и принимает те же аргументы.

Пример 1.43 Использование assertContainsOnlyScalar()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyScalarTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyScalar([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyScalarTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyScalarTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "scalar".

/path/to/tests/ContainsOnlyScalarTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyString()

assertContainsOnlyString(iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит значения не только типа string.

assertContainsNotOnlyString() является противоположным утверждением и принимает те же аргументы.

Пример 1.44 Использование assertContainsOnlyString()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyStringTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyString([null]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyStringTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyStringTest::testFailure
Failed asserting that Array &0 [
    0 => null,
] contains only values of type "string".

/path/to/tests/ContainsOnlyStringTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertContainsOnlyInstancesOf()

assertContainsOnlyInstancesOf(string $type, iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если $haystack содержит объекты, не являющиеся экземплярами класса или интерфейса $type.

assertContainsNotOnlyInstancesOf() является противоположным утверждением и принимает те же аргументы.

Пример 1.45 Использование assertContainsOnlyInstancesOf()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ContainsOnlyInstancesOfTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertContainsOnlyInstancesOf(
            Foo::class,
            [new Foo, new Bar, new Foo],
        );
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ContainsOnlyInstancesOfTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ContainsOnlyInstancesOfTest::testFailure
Failed asserting that Array &0 [
    0 => Foo Object #505 (),
    1 => Bar Object #513 (),
    2 => Foo Object #504 (),
] contains only values of type "Foo".

/path/to/tests/ContainsOnlyInstancesOfTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Объекты

assertObjectHasProperty()

assertObjectHasProperty(string $propertyName, object $object, string $message = '')

Сообщает об ошибке, идентифицированной $message, если у $object нет свойства с именем $propertyName.

assertObjectNotHasProperty() является противоположным утверждением и принимает те же аргументы.

Пример 1.46 Использование assertObjectHasProperty()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ObjectHasPropertyTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertObjectHasProperty('propertyName', new stdClass);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/ObjectHasPropertyTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ObjectHasPropertyTest::testFailure
Failed asserting that object of class "stdClass" has property "propertyName".

/path/to/tests/ObjectHasPropertyTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Количество элементов

assertCount()

assertCount(int $expectedCount, Countable|iterable $haystack[, string $message])

Сообщает об ошибке, идентифицированной $message, если количество элементов в $haystack не равно $expectedCount.

assertNotCount() является противоположным утверждением и принимает те же аргументы.

Пример 1.47 Использование assertCount()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class CountTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertCount(0, ['foo']);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/CountTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) CountTest::testFailure
Failed asserting that actual size 1 matches expected size 0.

/path/to/tests/CountTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Примечание

Обратите внимание, что assertCount() и assertNotCount() не поддерживают генераторы. Генераторы можно перебрать только один раз, и их нельзя клонировать. Поэтому передача генератора в assertCount() или assertNotCount() изменит состояние объекта, который должен только проверяться.

assertSameSize()

assertSameSize(Countable|iterable $expected, Countable|iterable $actual[, string $message])

Сообщает об ошибке, идентифицированной $message, если размеры $actual и $expected различаются.

assertNotSameSize() является противоположным утверждением и принимает те же аргументы.

Пример 1.48 Использование assertSameSize()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class SameSizeTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertSameSize([1, 2], [1]);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/SameSizeTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) SameSizeTest::testFailure
Failed asserting that actual size 1 matches expected size 2.

/path/to/tests/SameSizeTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Примечание

Обратите внимание, что assertSameSize() и assertNotSameSize() не поддерживают генераторы. Генераторы можно перебрать только один раз, и их нельзя клонировать. Поэтому передача генератора в assertSameSize() или assertNotSameSize() изменит состояние объекта, который должен только проверяться.

assertEmpty()

assertEmpty(mixed $actual[, string $message])

Сообщает об ошибке, идентифицированной $message, если $actual не пусто.

assertNotEmpty() является противоположным утверждением и принимает те же аргументы.

Пример 1.49 Использование assertEmpty()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class EmptyTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertEmpty(['foo']);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/EmptyTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) EmptyTest::testFailure
Failed asserting that an array is empty.

/path/to/tests/EmptyTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Примечание

Обратите внимание, что assertEmpty() и assertNotEmpty() не поддерживают генераторы. Генераторы можно перебрать только один раз, и их нельзя клонировать. Поэтому передача генератора в assertEmpty() или assertNotEmpty() изменит состояние объекта, который должен только проверяться.

assertGreaterThan()

assertGreaterThan(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, идентифицированной $message, если значение $actual не больше значения $expected.

Пример 1.50 Использование assertGreaterThan()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class GreaterThanTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertGreaterThan(2, 1);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/GreaterThanTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) GreaterThanTest::testFailure
Failed asserting that 1 is greater than 2.

/path/to/tests/GreaterThanTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertGreaterThanOrEqual()

assertGreaterThanOrEqual(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, идентифицированной $message, если значение $actual не больше или не равно значению $expected.

Пример 1.51 Использование assertGreaterThanOrEqual()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class GreaterThanOrEqualTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertGreaterThanOrEqual(2, 1);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/GreaterThanOrEqualTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) GreaterThanOrEqualTest::testFailure
Failed asserting that 1 is equal to 2 or is greater than 2.

/path/to/tests/GreaterThanOrEqualTest.php:8

FAILURES!
Tests: 1, Assertions: 2, Failures: 1.

assertLessThan()

assertLessThan(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, идентифицированной $message, если значение $actual не меньше значения $expected.

Пример 1.52 Использование assertLessThan()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class LessThanTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertLessThan(1, 2);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/LessThanTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) LessThanTest::testFailure
Failed asserting that 2 is less than 1.

/path/to/tests/LessThanTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertLessThanOrEqual()

assertLessThanOrEqual(mixed $expected, mixed $actual[, string $message])

Сообщает об ошибке, идентифицированной $message, если значение $actual не меньше или не равно значению $expected.

Пример 1.53 Использование assertLessThanOrEqual()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class LessThanOrEqualTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertLessThanOrEqual(1, 2);
    }
}

Выполнение показанного выше теста приводит к результату, показанному ниже:

./tools/phpunit tests/LessThanOrEqualTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) LessThanOrEqualTest::testFailure
Failed asserting that 2 is equal to 1 or is less than 1.

/path/to/tests/LessThanOrEqualTest.php:8

FAILURES!
Tests: 1, Assertions: 2, Failures: 1.

Типы

assertInstanceOf()

assertInstanceOf(string $expected, mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не является экземпляром $expected.

assertNotInstanceOf() — противоположная проверка с теми же аргументами.

Пример 1.54 Использование assertInstanceOf()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class InstanceOfTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertInstanceOf(RuntimeException::class, new Exception);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/InstanceOfTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) InstanceOfTest::testFailure
Failed asserting that an instance of class Exception is an instance of class RuntimeException.

/path/to/tests/InstanceOfTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsArray()

assertIsArray(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип array.

assertIsNotArray() — противоположная проверка с теми же аргументами.

Пример 1.55 Использование assertIsArray()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsArrayTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsArray(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsArrayTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsArrayTest::testFailure
Failed asserting that null is of type array.

/path/to/tests/IsArrayTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsList()

assertIsList(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не является массивом с последовательными числовыми ключами от 0 до count($actual) - 1.

Пример 1.56 Использование assertIsList()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsListTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsList([1 => 'foo', '3' => 'bar']);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsListTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsListTest::testFailure
Failed asserting that an array is a list.

/path/to/tests/IsListTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsBool()

assertIsBool(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип bool.

assertIsNotBool() — противоположная проверка с теми же аргументами.

Пример 1.57 Использование assertIsBool()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsBoolTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsBool(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsBoolTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsBoolTest::testFailure
Failed asserting that null is of type bool.

/path/to/tests/IsBoolTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsCallable()

assertIsCallable(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип callable.

assertIsNotCallable() — противоположная проверка с теми же аргументами.

Пример 1.58 Использование assertIsCallable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsCallableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsCallable(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsCallableTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsCallableTest::testFailure
Failed asserting that null is of type callable.

/path/to/tests/IsCallableTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsFloat()

assertIsFloat(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип float.

assertIsNotFloat() — противоположная проверка с теми же аргументами.

Пример 1.59 Использование assertIsFloat()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsFloatTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsFloat(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsFloatTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsFloatTest::testFailure
Failed asserting that null is of type float.

/path/to/tests/IsFloatTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsInt()

assertIsInt(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип int.

assertIsNotInt() — противоположная проверка с теми же аргументами.

Пример 1.60 Использование assertIsInt()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsIntTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsInt(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsIntTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsIntTest::testFailure
Failed asserting that null is of type int.

/path/to/tests/IsIntTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsIterable()

assertIsIterable(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип iterable.

assertIsNotIterable() — противоположная проверка с теми же аргументами.

Пример 1.61 Использование assertIsIterable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsIterableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsIterable(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsIterableTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsIterableTest::testFailure
Failed asserting that null is of type iterable.

/path/to/tests/IsIterableTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsNumeric()

assertIsNumeric(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип numeric.

assertIsNotNumeric() — противоположная проверка с теми же аргументами.

Пример 1.62 Использование assertIsNumeric()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsNumericTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsNumeric(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsNumericTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsNumericTest::testFailure
Failed asserting that null is of type numeric.

/path/to/tests/IsNumericTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsObject()

assertIsObject(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип object.

assertIsNotObject() — противоположная проверка с теми же аргументами.

Пример 1.63 Использование assertIsObject()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsObjectTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsObject(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsObjectTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsObjectTest::testFailure
Failed asserting that null is of type object.

/path/to/tests/IsObjectTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsResource()

assertIsResource(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип resource.

assertIsNotResource() — противоположная проверка с теми же аргументами.

assertIsClosedResource() (и assertIsNotClosedResource()) предназначены для явной проверки закрытых ресурсов.

Пример 1.64 Использование assertIsResource()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsResourceTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsResource(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsResourceTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsResourceTest::testFailure
Failed asserting that null is of type resource.

/path/to/tests/IsResourceTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsScalar()

assertIsScalar(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип scalar.

assertIsNotScalar() — противоположная проверка с теми же аргументами.

Пример 1.65 Использование assertIsScalar()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsScalarTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsScalar(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsScalarTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsScalarTest::testFailure
Failed asserting that null is of type scalar.

/path/to/tests/IsScalarTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsString()

assertIsString(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не имеет тип string.

assertIsNotString() — противоположная проверка с теми же аргументами.

Пример 1.66 Использование assertIsString()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsStringTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsString(null);
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/IsStringTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) IsStringTest::testFailure
Failed asserting that null is of type string.

/path/to/tests/IsStringTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertNull()

assertNull(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не равен null.

assertNotNull() — противоположная проверка с теми же аргументами.

Пример 1.67 Использование assertNull()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class NullTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertNull('foo');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/NullTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) NullTest::testFailure
Failed asserting that 'foo' is null.

/path/to/tests/NullTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Строки

assertStringStartsWith()

assertStringStartsWith(string $prefix, string $string[, string $message])

Сообщает об ошибке, обозначенной $message, если $string не начинается с $prefix.

assertStringStartsNotWith() — противоположная проверка с теми же аргументами.

Пример 1.68 Использование assertStringStartsWith()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringStartsWithTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringStartsWith('prefix', 'foo');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringStartsWithTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringStartsWithTest::testFailure
Failed asserting that 'foo' starts with "prefix".

/path/to/tests/StringStartsWithTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertStringEndsWith()

assertStringEndsWith(string $suffix, string $string[, string $message])

Сообщает об ошибке, обозначенной $message, если $string не заканчивается на $suffix.

assertStringEndsNotWith() — противоположная проверка с теми же аргументами.

Пример 1.69 Использование assertStringEndsWith()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringEndsWithTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringEndsWith('suffix', 'foo');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringEndsWithTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringEndsWithTest::testFailure
Failed asserting that 'foo' ends with "suffix".

/path/to/tests/StringEndsWithTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertStringContainsString()

assertStringContainsString(string $needle, string $haystack[, string $message])

Сообщает об ошибке, обозначенной $message, если $needle не является подстрокой $haystack.

assertStringNotContainsString() — противоположная проверка с теми же аргументами.

assertStringContainsStringIgnoringLineEndings() принимает те же аргументы и может использоваться, если необходимо игнорировать окончания строк.

Пример 1.70 Использование assertStringContainsString()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringContainsStringTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringContainsString('foo', 'bar');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringContainsStringTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringContainsStringTest::testFailure
Failed asserting that 'bar' [ASCII](length: 3) contains "foo" [ASCII](length: 3).

/path/to/tests/StringContainsStringTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertStringContainsStringIgnoringCase()

assertStringContainsStringIgnoringCase(string $needle, string $haystack[, string $message])

Сообщает об ошибке, обозначенной $message, если $needle не является подстрокой $haystack.

Регистр символов не учитывается при поиске $needle в $haystack. Это также работает для символов Unicode с диакритическими знаками (акцентами, умляутами, циркумфлексами и т. д.), если обе строки имеют одинаковую форму нормализации.

assertStringNotContainsStringIgnoringCase() — противоположная проверка с теми же аргументами.

Пример 1.71 Использование assertStringContainsStringIgnoringCase()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringContainsStringIgnoringCaseTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringContainsStringIgnoringCase('foo', 'bar');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringContainsStringIgnoringCaseTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringContainsStringIgnoringCaseTest::testFailure
Failed asserting that 'bar' [Encoding ignored](length: 3) contains "foo" [Encoding ignored](length: 3).

/path/to/tests/StringContainsStringIgnoringCaseTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertStringEqualsStringIgnoringLineEndings()

assertStringEqualsStringIgnoringLineEndings(string $expected, string $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две строки $expected и $actual не равны при игнорировании окончаний строк.

assertStringEqualsStringIgnoringWhitespace()

assertStringEqualsStringIgnoringWhitespace(string $expected, string $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если две строки $expected и $actual не равны при игнорировании различий в пробельных символах. Все последовательности пробельных символов (пробелы, табуляции, переводы строк и т. д.) нормализуются до одного пробела, а пробельные символы в начале и конце удаляются перед сравнением.

assertStringNotEqualsStringIgnoringWhitespace() — противоположная проверка с теми же аргументами.

Пример 1.72 Использование assertStringEqualsStringIgnoringWhitespace()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringEqualsStringIgnoringWhitespaceTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringEqualsStringIgnoringWhitespace(
            'hello world',
            'goodbye world',
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringEqualsStringIgnoringWhitespaceTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringEqualsStringIgnoringWhitespaceTest::testFailure
Failed asserting that 'goodbye world' is equal to "hello world" ignoring whitespace.

/path/to/tests/StringEqualsStringIgnoringWhitespaceTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertMatchesRegularExpression()

assertMatchesRegularExpression(string $pattern, string $string[, string $message])

Сообщает об ошибке, обозначенной $message, если $string не соответствует регулярному выражению $pattern.

assertDoesNotMatchRegularExpression() — противоположная проверка с теми же аргументами.

Пример 1.73 Использование assertMatchesRegularExpression()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class MatchesRegularExpressionTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertMatchesRegularExpression('/foo/', 'bar');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/MatchesRegularExpressionTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) MatchesRegularExpressionTest::testFailure
Failed asserting that 'bar' matches PCRE pattern "/foo/".

/path/to/tests/MatchesRegularExpressionTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertStringMatchesFormat()

assertStringMatchesFormat(string $format, string $string[, string $message])

Сообщает об ошибке, обозначенной $message, если $string не соответствует строке формата $format.

Пример 1.74 Использование assertStringMatchesFormat()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringMatchesFormatTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringMatchesFormat('%i', 'foo');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringMatchesFormatTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringMatchesFormatTest::testFailure
Failed asserting that string matches format description.
--- Expected
+++ Actual
@@ @@
-%i
+foo

/path/to/tests/StringMatchesFormatTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Строка формата может содержать следующие заполнители:

  • %e: обозначает разделитель каталогов, например / в Linux.

  • %s: один или несколько любых символов (символов или пробельных символов), кроме символа конца строки.

  • %S: ноль или более любых символов (символов или пробельных символов), кроме символа конца строки.

  • %a: один или несколько любых символов (символов или пробельных символов), включая символ конца строки.

  • %A: ноль или более любых символов (символов или пробельных символов), включая символ конца строки.

  • %w: ноль или более пробельных символов.

  • %i: целое число со знаком, например +3142, -3142.

  • %d: целое число без знака, например 123456.

  • %x: один или несколько шестнадцатеричных символов, то есть символов в диапазонах 0-9, a-f, A-F.

  • %f: число с плавающей точкой, например: 3.142, -3.142, 3.142E-10, 3.142e+10.

  • %c: один символ любого типа.

  • %%: буквальный символ процента: %.

assertStringMatchesFormatFile()

assertStringMatchesFormatFile(string $formatFile, string $string[, string $message])

Сообщает об ошибке, обозначенной $message, если $string не соответствует содержимому $formatFile.

Пример 1.75 Использование assertStringMatchesFormatFile()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringMatchesFormatFileTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringMatchesFormatFile(
            __DIR__ . '/expected-format.txt',
            'foo',
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringMatchesFormatFileTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringMatchesFormatFileTest::testFailure
Failed asserting that string matches format description.
--- Expected
+++ Actual
@@ @@
-%i
+foo

/path/to/tests/StringMatchesFormatFileTest.php:8

FAILURES!
Tests: 1, Assertions: 3, Failures: 1.

assertFileMatchesFormat()

assertFileMatchesFormat(string $format, string $actualFile[, string $message])

Сообщает об ошибке, обозначенной $message, если содержимое $actualFile не соответствует строке формата $format.

assertFileMatchesFormatFile()

assertFileMatchesFormat(string $formatFile, string $actualFile[, string $message])

Сообщает об ошибке, обозначенной $message, если содержимое $actualFile не соответствует содержимому $formatFile.

assertStringEqualsFile()

assertStringEqualsFile(string $expectedFile, string $actualString[, string $message])

Сообщает об ошибке, обозначенной $message, если файл, указанный в $expectedFile, не содержит $actualString.

assertStringNotEqualsFile() — противоположная проверка с теми же аргументами.

assertStringEqualsFileCanonicalizing() (и assertStringNotEqualsFileCanonicalizing()), а также assertStringEqualsFileIgnoringCase() (и assertStringNotEqualsFileIgnoringCase()) выполняют для файлов то же, что assertEqualsCanonicalizing() (и assertNotEqualsCanonicalizing()), а также assertEqualsIgnoringCase() (и assertNotEqualsIgnoringCase()) — для строк.

Пример 1.76 Использование assertStringEqualsFile()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringEqualsFileTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringEqualsFile(
            __DIR__ . '/expected.txt',
            'actual',
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringEqualsFileTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringEqualsFileTest::testFailure
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'expected\n
-'
+'actual'

/path/to/tests/StringEqualsFileTest.php:8

FAILURES!
Tests: 1, Assertions: 3, Failures: 1.

assertStringEqualsFileIgnoringWhitespace()

assertStringEqualsFileIgnoringWhitespace(string $expectedFile, string $actualString[, string $message])

Сообщает об ошибке, обозначенной $message, если файл, указанный в $expectedFile, не содержит $actualString (без учёта различий в пробельных символах). Все последовательности пробельных символов нормализуются до одного пробела, а пробельные символы в начале и конце удаляются перед сравнением.

assertStringNotEqualsFileIgnoringWhitespace() — противоположная проверка с теми же аргументами.

Пример 1.77 Использование assertStringEqualsFileIgnoringWhitespace()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StringEqualsFileIgnoringWhitespaceTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertStringEqualsFileIgnoringWhitespace(
            __DIR__ . '/expected.txt',
            'actual',
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/StringEqualsFileIgnoringWhitespaceTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) StringEqualsFileIgnoringWhitespaceTest::testFailure
Failed asserting that 'actual' is equal to "expected" ignoring whitespace.

/path/to/tests/StringEqualsFileIgnoringWhitespaceTest.php:8

FAILURES!
Tests: 1, Assertions: 3, Failures: 1.

JSON

assertJson()

assertJson(string $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если значение $actual не является допустимым JSON.

Пример 1.78 Использование assertJson()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class JsonTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertJson('not-a-json-string');
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/JsonTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) JsonTest::testFailure
Failed asserting that a string is valid JSON (Syntax error, malformed JSON).

/path/to/tests/JsonTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertJsonFileEqualsJsonFile()

assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile[, string $message])

Сообщает об ошибке, обозначенной $message, если значение $actualFile не совпадает со значением $expectedFile.

assertJsonFileNotEqualsJsonFile() — противоположная проверка с теми же аргументами.

Пример 1.79 Использование assertJsonFileEqualsJsonFile()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class JsonFileEqualsJsonFileTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertJsonFileEqualsJsonFile(
            __DIR__ . '/expected.json',
            __DIR__ . '/actual.json',
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/JsonFileEqualsJsonFileTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) JsonFileEqualsJsonFileTest::testFailure
Failed asserting that '{"mascot":"elephant"}\n
' matches JSON string "{"mascot":"elePHPant"}
".
--- Expected
+++ Actual
@@ @@
 {
-    "mascot": "elePHPant"
+    "mascot": "elephant"
 }

/path/to/tests/JsonFileEqualsJsonFileTest.php:8

FAILURES!
Tests: 1, Assertions: 7, Failures: 1.

assertJsonStringEqualsJsonFile()

assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson[, string $message])

Сообщает об ошибке, обозначенной $message, если значение $actualJson не совпадает со значением $expectedFile.

assertJsonStringNotEqualsJsonFile() — противоположная проверка с теми же аргументами.

Пример 1.80 Использование assertJsonStringEqualsJsonFile()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class JsonStringEqualsJsonFileTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertJsonStringEqualsJsonFile(
            __DIR__ . '/expected.json',
            json_encode(['mascot' => 'elephant']),
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/JsonStringEqualsJsonFileTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) JsonStringEqualsJsonFileTest::testFailure
Failed asserting that '{"mascot":"elephant"}' matches JSON string "{"mascot":"elePHPant"}
".
--- Expected
+++ Actual
@@ @@
 {
-    "mascot": "elePHPant"
+    "mascot": "elephant"
 }

/path/to/tests/JsonStringEqualsJsonFileTest.php:8

FAILURES!
Tests: 1, Assertions: 5, Failures: 1.

assertJsonStringEqualsJsonString()

assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson[, string $message])

Сообщает об ошибке, обозначенной $message, если значение $actualJson не совпадает со значением $expectedJson.

assertJsonStringNotEqualsJsonString() — противоположная проверка с теми же аргументами.

Пример 1.81 Использование assertJsonStringEqualsJsonString()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class JsonStringEqualsJsonStringTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertJsonStringEqualsJsonString(
            json_encode(['mascot' => 'elePHPant']),
            json_encode(['mascot' => 'elephant']),
        );
    }
}

Запуск показанного выше теста приводит к результату, представленному ниже:

./tools/phpunit tests/JsonStringEqualsJsonStringTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) JsonStringEqualsJsonStringTest::testFailure
Failed asserting that '{"mascot":"elephant"}' matches JSON string "{"mascot":"elePHPant"}".
--- Expected
+++ Actual
@@ @@
 {
-    "mascot": "elePHPant"
+    "mascot": "elephant"
 }

/path/to/tests/JsonStringEqualsJsonStringTest.php:8

FAILURES!
Tests: 1, Assertions: 3, Failures: 1.

XML

assertXmlFileEqualsXmlFile()

assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile[, string $message])

Сообщает об ошибке, обозначенной $message, если XML-документ в $actualFile не равен XML-документу в $expectedFile. Комментарии в XML-документах игнорируются при сравнении.

assertXmlFileNotEqualsXmlFile() является инверсией этой проверки и принимает те же аргументы.

Пример 1.82 Использование assertXmlFileEqualsXmlFile()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class XmlFileEqualsXmlFileTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertXmlFileEqualsXmlFile(
            __DIR__ . '/expected.xml',
            __DIR__ . '/actual.xml',
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/XmlFileEqualsXmlFileTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00.001, Memory: 28.00 MB

There was 1 failure:

1) XmlFileEqualsXmlFileTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
 <foo>
-  <bar/>
+  <baz/>
 </foo>

/path/to/tests/XmlFileEqualsXmlFileTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertXmlStringEqualsXmlFile()

assertXmlStringEqualsXmlFile(string $expectedFile, string $actualXml[, string $message])

Сообщает об ошибке, обозначенной $message, если XML-документ в $actualXml не равен XML-документу в $expectedFile. Комментарии в XML-документах игнорируются при сравнении.

assertXmlStringNotEqualsXmlFile() является инверсией этой проверки и принимает те же аргументы.

Пример 1.83 Использование assertXmlStringEqualsXmlFile()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class XmlStringEqualsXmlFileTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertXmlStringEqualsXmlFile(
            __DIR__ . '/expected.xml',
            '<foo><baz/></foo>',
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/XmlStringEqualsXmlFileTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00.001, Memory: 28.00 MB

There was 1 failure:

1) XmlStringEqualsXmlFileTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
 <foo>
-  <bar/>
+  <baz/>
 </foo>

/path/to/tests/XmlStringEqualsXmlFileTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertXmlStringEqualsXmlString()

assertXmlStringEqualsXmlString(string $expectedXml, string $actualXml[, string $message])

Сообщает об ошибке, обозначенной $message, если XML-документ в $actualXml не равен XML-документу в $expectedXml. Комментарии в XML-документах игнорируются при сравнении.

assertXmlStringNotEqualsXmlString() является инверсией этой проверки и принимает те же аргументы.

Пример 1.84 Использование assertXmlStringEqualsXmlString()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class XmlStringEqualsXmlStringTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertXmlStringEqualsXmlString(
            '<foo><bar/></foo>',
            '<foo><baz/></foo>',
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/XmlStringEqualsXmlStringTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) XmlStringEqualsXmlStringTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
 <foo>
-  <bar/>
+  <baz/>
 </foo>

/path/to/tests/XmlStringEqualsXmlStringTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertXmlFileEqualsXmlFileConsideringComments()

assertXmlFileEqualsXmlFileConsideringComments(string $expectedFile, string $actualFile[, string $message])

Сообщает об ошибке, обозначенной $message, если XML-документ в $actualFile не равен XML-документу в $expectedFile. В отличие от assertXmlFileEqualsXmlFile(), комментарии в XML-документах учитываются при сравнении.

assertXmlFileNotEqualsXmlFileConsideringComments() является инверсией этой проверки и принимает те же аргументы.

Пример 1.85 Использование assertXmlFileEqualsXmlFileConsideringComments()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class XmlFileEqualsXmlFileConsideringCommentsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertXmlFileEqualsXmlFileConsideringComments(
            __DIR__ . '/with-comments.xml',
            __DIR__ . '/without-comments.xml',
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/XmlFileEqualsXmlFileConsideringCommentsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00.001, Memory: 28.00 MB

There was 1 failure:

1) XmlFileEqualsXmlFileConsideringCommentsTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
 <root>
-  <!-- a comment -->
   <node/>
 </root>

/path/to/tests/XmlFileEqualsXmlFileConsideringCommentsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertXmlStringEqualsXmlFileConsideringComments()

assertXmlStringEqualsXmlFileConsideringComments(string $expectedFile, string $actualXml[, string $message])

Сообщает об ошибке, обозначенной $message, если XML-документ в $actualXml не равен XML-документу в $expectedFile. В отличие от assertXmlStringEqualsXmlFile(), комментарии в XML-документах учитываются при сравнении.

assertXmlStringNotEqualsXmlFileConsideringComments() является инверсией этой проверки и принимает те же аргументы.

Пример 1.86 Использование assertXmlStringEqualsXmlFileConsideringComments()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class XmlStringEqualsXmlFileConsideringCommentsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertXmlStringEqualsXmlFileConsideringComments(
            __DIR__ . '/with-comments.xml',
            '<root><node/></root>',
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/XmlStringEqualsXmlFileConsideringCommentsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) XmlStringEqualsXmlFileConsideringCommentsTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
 <root>
-  <!-- a comment -->
   <node/>
 </root>

/path/to/tests/XmlStringEqualsXmlFileConsideringCommentsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertXmlStringEqualsXmlStringConsideringComments()

assertXmlStringEqualsXmlStringConsideringComments(string $expectedXml, string $actualXml[, string $message])

Сообщает об ошибке, обозначенной $message, если XML-документ в $actualXml не равен XML-документу в $expectedXml. В отличие от assertXmlStringEqualsXmlString(), комментарии в XML-документах учитываются при сравнении.

assertXmlStringNotEqualsXmlStringConsideringComments() является инверсией этой проверки и принимает те же аргументы.

Пример 1.87 Использование assertXmlStringEqualsXmlStringConsideringComments()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class XmlStringEqualsXmlStringConsideringCommentsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertXmlStringEqualsXmlStringConsideringComments(
            '<root><!-- a comment --><node/></root>',
            '<root><node/></root>',
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/XmlStringEqualsXmlStringConsideringCommentsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) XmlStringEqualsXmlStringConsideringCommentsTest::testFailure
Failed asserting that two DOM documents are equal.
--- Expected
+++ Actual
@@ @@
 <?xml version="1.0" encoding="UTF-8"?>
 <root>
-  <!-- a comment -->
   <node/>
 </root>

/path/to/tests/XmlStringEqualsXmlStringConsideringCommentsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Файловая система

assertDirectoryExists()

assertDirectoryExists(string $directory[, string $message])

Сообщает об ошибке, обозначенной $message, если каталог, указанный в $directory, не существует.

assertDirectoryDoesNotExist() является инверсией этой проверки и принимает те же аргументы.

Пример 1.88 Использование assertDirectoryExists()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class DirectoryExistsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertDirectoryExists('/path/to/directory');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/DirectoryExistsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) DirectoryExistsTest::testFailure
Failed asserting that directory "/path/to/directory" exists.

/path/to/tests/DirectoryExistsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertDirectoryIsReadable()

assertDirectoryIsReadable(string $directory[, string $message])

Сообщает об ошибке, обозначенной $message, если каталог, указанный в $directory, не является каталогом или недоступен для чтения.

assertDirectoryIsNotReadable() является инверсией этой проверки и принимает те же аргументы.

Пример 1.89 Использование assertDirectoryIsReadable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class DirectoryIsReadableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertDirectoryIsReadable('/path/to/directory');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/DirectoryIsReadableTest.php
PHPUnit 10.0.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.3

F

Time: 00:00, Memory: 14.29 MB

There was 1 failure:

1) DirectoryIsReadableTest::testFailure
Failed asserting that "/path/to/directory" is readable.

/path/to/DirectoryIsReadableTest.php:6

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertDirectoryIsWritable()

assertDirectoryIsWritable(string $directory[, string $message])

Сообщает об ошибке, обозначенной $message, если каталог, указанный в $directory, не является каталогом или недоступен для записи.

assertDirectoryIsNotWritable() является инверсией этой проверки и принимает те же аргументы.

Пример 1.90 Использование assertDirectoryIsWritable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class DirectoryIsReadableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertDirectoryIsReadable('/path/to/directory');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/DirectoryIsWritableTest.php
PHPUnit 10.0.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.3

F

Time: 00:00, Memory: 14.29 MB

There was 1 failure:

1) DirectoryIsWritableTest::testFailure
Failed asserting that "/path/to/directory" is writable.

/path/to/DirectoryIsWritableTest.php:6

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertFileExists()

assertFileExists(string $filename[, string $message])

Сообщает об ошибке, обозначенной $message, если файл, указанный в $filename, не существует.

assertFileDoesNotExist() является инверсией этой проверки и принимает те же аргументы.

Пример 1.91 Использование assertFileExists()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class FileExistsTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertFileExists('/path/to/file');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/FileExistsTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) FileExistsTest::testFailure
Failed asserting that file "/path/to/file" exists.

/path/to/tests/FileExistsTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertFileIsReadable()

assertFileIsReadable(string $filename[, string $message])

Сообщает об ошибке, обозначенной $message, если файл, указанный в $filename, не является файлом или недоступен для чтения.

assertFileIsNotReadable() является инверсией этой проверки и принимает те же аргументы.

Пример 1.92 Использование assertFileIsReadable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class FileIsReadableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertFileIsReadable('/path/to/file');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/FileIsReadableTest.php
PHPUnit 10.0.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.3

F

Time: 00:00, Memory: 14.29 MB

There was 1 failure:

1) FileIsReadableTest::testFailure
Failed asserting that "/path/to/file" is readable.

/path/to/FileIsReadableTest.php:6

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertFileIsWritable()

assertFileIsWritable(string $filename[, string $message])

Сообщает об ошибке, обозначенной $message, если файл, указанный в $filename, не является файлом или недоступен для записи.

assertFileIsNotWritable() является инверсией этой проверки и принимает те же аргументы.

Пример 1.93 Использование assertFileIsWritable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class FileIsWritableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertFileIsWritable('/path/to/file');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/FileIsWritableTest.php
PHPUnit 10.0.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.3

F

Time: 00:00, Memory: 14.29 MB

There was 1 failure:

1) FileIsWritableTest::testFailure
Failed asserting that "/path/to/file" is writable.

/path/to/FileIsWritableTest.php:6

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsReadable()

assertIsReadable(string $filename[, string $message])

Сообщает об ошибке, обозначенной $message, если файл или каталог, указанный в $filename, недоступен для чтения.

assertIsNotReadable() является инверсией этой проверки и принимает те же аргументы.

Пример 1.94 Использование assertIsReadable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsReadableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsReadable('/path/to/unreadable');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/IsReadableTest.php
PHPUnit 10.0.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.3

F

Time: 00:00, Memory: 14.29 MB

There was 1 failure:

1) IsReadableTest::testFailure
Failed asserting that "/path/to/unreadable" is readable.

/path/to/IsReadableTest.php:6

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertIsWritable()

assertIsWritable(string $filename[, string $message])

Сообщает об ошибке, обозначенной $message, если файл или каталог, указанный в $filename, недоступен для записи.

assertIsNotWritable() является инверсией этой проверки и принимает те же аргументы.

Пример 1.95 Использование assertIsWritable()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class IsWritableTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertIsWritable('/path/to/unwritable');
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/IsWritableTest.php
PHPUnit 10.0.11 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.3

F

Time: 00:00, Memory: 14.29 MB

There was 1 failure:

1) IsWritableTest::testFailure
Failed asserting that "/path/to/unwritable" is writable.

/path/to/IsWritableTest.php:6

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Математика

assertInfinite()

assertInfinite(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не является INF.

assertFinite() является инверсией этой проверки и принимает те же аргументы.

Пример 1.96 Использование assertInfinite()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class InfiniteTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertInfinite(1);
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/InfiniteTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) InfiniteTest::testFailure
Failed asserting that 1 is infinite.

/path/to/tests/InfiniteTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

assertNan()

assertNan(mixed $actual[, string $message])

Сообщает об ошибке, обозначенной $message, если $actual не является NAN.

Пример 1.97 Использование assertNan()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class NanTest extends TestCase
{
    public function testFailure(): void
    {
        $this->assertNan(1);
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/NanTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) NanTest::testFailure
Failed asserting that 1 is nan.

/path/to/tests/NanTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Ограничения

assertThat()

assertThat(mixed $value, PHPUnit\Framework\Constraint $constraint[, string $message])

Сообщает об ошибке, обозначенной $message, если $value не соответствует $constraint.

Более сложные проверки можно сформулировать с помощью классов PHPUnit\Framework\Constraint. Их можно выполнить с помощью метода assertThat().

В этом примере показано, как ограничения logicalNot() и equalTo() можно использовать, например, чтобы выразить ту же проверку, что и assertNotEquals():

Пример 1.98 Использование assertThat()
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class BiscuitTest extends TestCase
{
    public function testEquals(): void
    {
        $theBiscuit = new Biscuit('Ginger');
        $myBiscuit  = new Biscuit('Ginger');

        $this->assertThat(
            $theBiscuit,
            $this->logicalNot(
                $this->equalTo($myBiscuit),
            ),
        );
    }
}

При запуске приведённого выше теста вывод будет следующим:

./tools/phpunit tests/BiscuitTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) BiscuitTest::testEquals
Failed asserting that Biscuit Object #505 (
    'name' => 'Ginger',
) is not equal to Biscuit Object #513 (
    'name' => 'Ginger',
).

/path/to/tests/BiscuitTest.php:11

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

В таблице 1.1 представлены доступные классы PHPUnit\Framework\Constraint.

Таблица 1.1 Ограничения

Ограничение

Значение

PHPUnit\Framework\Constraint\IsAnything anything()

Ограничение, принимающее любое входное значение.

PHPUnit\Framework\Constraint\ArrayHasKey arrayHasKey(mixed $key)

Ограничение, проверяющее, что массив содержит заданный ключ.

PHPUnit\Framework\Constraint\TraversableContains contains(mixed $value)

Ограничение, проверяющее, что array или объект, реализующий интерфейс Iterator, содержит заданное значение.

PHPUnit\Framework\Constraint\TraversableContainsOnly containsOnly(string $type)

Ограничение, проверяющее, что array или объект, реализующий интерфейс Iterator, содержит только значения заданного типа.

PHPUnit\Framework\Constraint\TraversableContainsOnly containsOnlyInstancesOf(string $classname)

Ограничение, проверяющее, что array или объект, реализующий интерфейс Iterator, содержит только экземпляры заданного класса.

PHPUnit\Framework\Constraint\IsEqual equalTo($value, $delta = 0, $maxDepth = 10)

Ограничение, проверяющее равенство двух значений.

PHPUnit\Framework\Constraint\DirectoryExists directoryExists()

Ограничение, проверяющее существование каталога.

PHPUnit\Framework\Constraint\FileExists fileExists()

Ограничение, проверяющее существование файла (имени файла).

PHPUnit\Framework\Constraint\IsReadable isReadable()

Ограничение, проверяющее, доступен ли файл (имя файла) для чтения.

PHPUnit\Framework\Constraint\IsWritable isWritable()

Ограничение, проверяющее, доступен ли файл (имя файла) для записи.

PHPUnit\Framework\Constraint\GreaterThan greaterThan(mixed $value)

Ограничение, проверяющее, что значение больше заданного.

PHPUnit\Framework\Constraint\LogicalOr greaterThanOrEqual(mixed $value)

Ограничение, проверяющее, что значение больше или равно заданному.

PHPUnit\Framework\Constraint\IsIdentical identicalTo(mixed $value)

Ограничение, проверяющее, что одно значение идентично другому.

PHPUnit\Framework\Constraint\IsFalse isFalse()

Ограничение, проверяющее, что значение является false.

PHPUnit\Framework\Constraint\IsInstanceOf isInstanceOf(string $className)

Ограничение, проверяющее, что объект является экземпляром заданного класса.

PHPUnit\Framework\Constraint\IsNull isNull()

Ограничение, проверяющее, что значение является null.

PHPUnit\Framework\Constraint\IsTrue isTrue()

Ограничение, проверяющее, что значение является true.

PHPUnit\Framework\Constraint\IsType isType(string $type)

Ограничение, проверяющее, что значение имеет указанный тип.

PHPUnit\Framework\Constraint\LessThan lessThan(mixed $value)

Ограничение, проверяющее, что значение меньше заданного.

PHPUnit\Framework\Constraint\LogicalOr lessThanOrEqual(mixed $value)

Ограничение, проверяющее, что значение меньше или равно заданному.

logicalAnd()

Логическое И.

logicalNot(PHPUnit\Framework\Constraint $constraint)

Логическое НЕ.

logicalOr()

Логическое ИЛИ.

logicalXor()

Логическое исключающее ИЛИ.

PHPUnit\Framework\Constraint\PCREMatch matchesRegularExpression(string $pattern)

Ограничение, проверяющее соответствие строки регулярному выражению.

PHPUnit\Framework\Constraint\StringContains stringContains(string $string, bool $case)

Ограничение, проверяющее, что строка содержит заданную строку.

PHPUnit\Framework\Constraint\StringEndsWith stringEndsWith(string $suffix)

Ограничение, проверяющее, что строка заканчивается заданным суффиксом.

PHPUnit\Framework\Constraint\StringStartsWith stringStartsWith(string $prefix)

Ограничение, проверяющее, что строка начинается с заданного префикса.

© 2005–2026 Sebastian Bergmann
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://docs.phpunit.de/en/13.2/assertions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API