Утверждения
В этом приложении перечислены различные доступные методы утверждений.
Статическое и нестатическое использование методов утверждений
Утверждения 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() является обратным для этого утверждения и принимает те же аргументы.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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 не ссылаются на один и тот же объект.
<?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 не идентичны. Массивы должны содержать одинаковые пары «ключ—значение» в одинаковом порядке. Ключи и значения сравниваются строго (===).
<?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 не идентичны при игнорировании порядка элементов. Массивы должны содержать одинаковые пары «ключ—значение», но порядок элементов не имеет значения. Ключи и значения сравниваются строго (===).
<?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 не содержат идентичных значений. Ключи массивов игнорируются; сравниваются только значения, причем в порядке следования. Значения сравниваются строго (===).
<?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 не содержат идентичных значений при игнорировании порядка элементов. Ключи массивов игнорируются; сравниваются только значения, а их порядок не имеет значения. Значения сравниваются строго (===).
<?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, если два массива не идентичны при учете только тех элементов массива, ключи которых были указаны.
<?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, если два массива не идентичны при игнорировании только тех элементов массива, ключи которых были указаны.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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, не равны.
<?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, не равны.
<?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 не равны.
<?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 не равны.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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.
<?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()) для строк.
<?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() является обратным для этого утверждения и принимает те же аргументы.
<?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 не равны. Массивы должны содержать одинаковые пары «ключ—значение» в одинаковом порядке. Ключи и значения сравниваются нестрого (==).
<?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 не равны при игнорировании порядка элементов. Массивы должны содержать одинаковые пары «ключ—значение», но порядок элементов не имеет значения. Ключи и значения сравниваются нестрого (==).
<?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 не содержат равных значений. Ключи массивов игнорируются; сравниваются только значения, причем в порядке следования. Значения сравниваются нестрого (==).
<?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 не содержат равных значений при игнорировании порядка элементов. Ключи массивов игнорируются; сравниваются только значения, а их порядок не имеет значения. Значения сравниваются нестрого (==).
<?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, если два массива не равны при учете только тех элементов массива, ключи которых были указаны.
<?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, если два массива не равны при игнорировании только тех элементов массива, ключи которых были указаны.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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() является противоположным утверждением и принимает те же аргументы.
<?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.
<?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.
<?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.
<?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.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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()) предназначены для явной проверки закрытых ресурсов.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() принимает те же аргументы и может использоваться, если необходимо игнорировать окончания строк.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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.
<?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.
<?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()) — для строк.
<?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() — противоположная проверка с теми же аргументами.
<?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.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() — противоположная проверка с теми же аргументами.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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() является инверсией этой проверки и принимает те же аргументы.
<?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.
<?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():
<?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.
Ограничение | Значение |
|---|---|
| Ограничение, принимающее любое входное значение. |
| Ограничение, проверяющее, что массив содержит заданный ключ. |
| Ограничение, проверяющее, что |
| Ограничение, проверяющее, что |
| Ограничение, проверяющее, что |
| Ограничение, проверяющее равенство двух значений. |
| Ограничение, проверяющее существование каталога. |
| Ограничение, проверяющее существование файла (имени файла). |
| Ограничение, проверяющее, доступен ли файл (имя файла) для чтения. |
| Ограничение, проверяющее, доступен ли файл (имя файла) для записи. |
| Ограничение, проверяющее, что значение больше заданного. |
| Ограничение, проверяющее, что значение больше или равно заданному. |
| Ограничение, проверяющее, что одно значение идентично другому. |
| Ограничение, проверяющее, что значение является |
| Ограничение, проверяющее, что объект является экземпляром заданного класса. |
| Ограничение, проверяющее, что значение является |
| Ограничение, проверяющее, что значение является |
| Ограничение, проверяющее, что значение имеет указанный тип. |
| Ограничение, проверяющее, что значение меньше заданного. |
| Ограничение, проверяющее, что значение меньше или равно заданному. |
| Логическое И. |
| Логическое НЕ. |
| Логическое ИЛИ. |
| Логическое исключающее ИЛИ. |
| Ограничение, проверяющее соответствие строки регулярному выражению. |
| Ограничение, проверяющее, что строка содержит заданную строку. |
| Ограничение, проверяющее, что строка заканчивается заданным суффиксом. |
| Ограничение, проверяющее, что строка начинается с заданного префикса. |
© 2005–2026 Sebastian Bergmann
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://docs.phpunit.de/en/13.2/assertions.html