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のシステム開発は株式会社パパグラムへぜひご相談ください。