見出し画像

PHPUnit入門②

よく使うアサーションを紹介したいと思います。入門①は下記です。


筆者の開発環境

PC:Apple M1 チップ搭載MacBook Air
OS:macOS Ventura 13.6
MAMP:6.8
PHP:8.2.0
PHPUnit:10.4.1

2つの値が等しいことを検証する

assertSame()メソッドを使います。厳密な型比較になります。

$this->assertSame('hoge', 'hoge'); // OK
$this->assertSame(0, 0); // OK
$this->assertSame(false, false); // OK
$this->assertSame(null, null); // OK

$this->assertSame(0, '0'); // NG
$this->assertSame(null, ''); // NG
$this->assertSame(false, 0); // NG

条件が真 / 偽であることを検証する

assertTrue()メソッド / assertFalse()メソッドを使います。

// 真であることを検証
$actual = 1 > 0;
$this->assertTrue($actual);

// 偽であることを検証
$actual = 1 < 0;
$this->assertFalse($actual);

値がnull / nullでないことを検証する

assertNull()メソッド / assertNotNull()メソッドを使います。

// nullであることを検証
$actual = null;
$this->assertNull($actual);

// nullでないことを検証
$actual = 0;
$this->assertNotNull($actual);

期待値より大きい / 大きいか等しいことを検証する

assertGreaterThan()メソッド / assertGreaterThanOrEqualメソッドを使います。

$actual = 2;
$this->assertGreaterThan(1, $actual);

$actual = 1;
$this->assertGreaterThanOrEqual(1, $actual);

$actual = 2;
$this->assertGreaterThanOrEqual(1, $actual);

期待値より小さい / 小さいか等しいことを検証する

assertLessThan()メソッド / assertLessThanOrEqual()メソッドを使います。

$actual = 1;
$this->assertLessThan(2, $actual);

$actual = 1;
$this->assertLessThanOrEqual(1, $actual);

$actual = 1;
$this->assertLessThanOrEqual(2, $actual);

配列やcountableなオブジェクトの要素数を検査する

assertCount()メソッドを使います。

$actual = [1, 2, 3, 4, 5];
$this->assertCount(5, $actual);

配列に特定のキーが存在することを検証する

assertArrayHasKey()メソッドを使います。

$actual = [
    'name' => 'John',
    'age' => 18,
];
$this->assertArrayHasKey('age', $actual);

配列に特定の値が存在することを検証する

assertContains()メソッドを使います。

$actual = [
    'name' => 'John',
    'age' => 18,
];
$this->assertContains('John', $actual);

配列が空であることを検証する

assertEmpty()メソッドを使います。

$actual = [];
$this->assertEmpty($actual);

文字列の前方一致、後方一致、部分一致を検査する

assertStringStartsWith()メソッド、assertStringEndsWith()、assertStringContainsString()メソッドを使用します。

$actual = 'あいうえお';

// 前方一致
$this->assertStringStartsWith('あい', $actual);

// 後方一致
$this->assertStringEndsWith('えお', $actual);

// 部分一致
$this->assertStringContainsString('いうえ', $actual);

値が配列であることを検証する

assertIsArray()メソッドを使います。

$actual = [1, 2, 3];
$this->assertIsArray($actual);

値があるクラスのインスタンスであることを検証する

assertInstanceOf()メソッドを使います。

$actual = new Calculator();
$this->assertInstanceOf(Calculator::class, $actual);

ファイルが存在すること / 存在しないことを検証する

assertFileExists()メソッド / assertFileDoesNotExist()メソッドを使います。

// ファイルが存在することを検証
$this->assertFileExists(__DIR__ . '/../src/Calculator.php');

// ファイルが存在しないことを検証
$this->assertFileDoesNotExist(__DIR__ . '/../src/User.php');

その他のアサーション

 アサーションは他にもあります。公式ページに記載されているアサーション一覧はこちらです。

解説は以上です。おつかれさまでした。

PHP/Laravelのシステム開発は株式会社パパグラムへぜひご相談ください。

この記事が気に入ったらサポートをしてみませんか?