Closed1

PHP¦UnitTest – よく使うassertメソッド

環境

  • laravel 8
  • php 7.3
  • phpunit/phpunit 9.0

文字列など...

メソッド 内容
assertNull($a) $aがNULL
assertEquals($a, $b) $a$bが等しい
assertSame($a, $b) $a$bが型も含めて等しい

🔍 urlを作成した時のチェックもできる

$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $param);
$this->assertEquals($param['reservation_id'], $reservation->id);
// クエリが等しいか
$this->assertSame('/user/connect', parse_url($url, PHP_URL_PATH));
// パスが等しいか

🔍 画像のmimeタイプもチェックできる

$this->assertEquals(finfo_buffer(finfo_open(FILEINFO_MIME_TYPE), base64_decode($qrImg)), 'image/svg+xml');

bool

boolのメソッドでcollectionのメソッドと組み合わせると便利

メソッド 内容
assertTrue($a) $aがTrue
assertFalse($a) $aがfalse
$this->assertTrue($reservations->every(function ($value, $key) use ($today) {
    return (new \Carbon($value['date']))->gte($today);
})); // 全ての予約日時が$value['date']以上(あとの日付)か

配列

メソッド 内容 比較の種類
assertEmpty($ary) $aryが空
assertArrayHasKey($key, $ary) $key$aryに配列のキーとして存在する 緩やかな比較==
assertContains($value, $ary) $value$aryに配列の値として存在する 厳密な比較===

ファイルアップロード

UploadedFile::fake()->image('test.jpg')とケミ🤝

メソッド 内容
assertExists($fileName) $fileNameが保存されたか
assertMissing($fileName) $fileNameが存在していないか
\Storage::disk('s3')->assertMissing($fileName);

比較

assertGreaterThanで超えるやassertLessThanで未満もチェックできる

メソッド 内容
assertGreaterThanOrEqual($a, $b) $a <= $b($a$b以下/$b$a以上)
assertLessThanOrEqual($a, $b) $a >= $b($a$b以上/$b$a以下)

class

たま〜〜〜〜〜〜に使う時がある

メソッド 内容
assertInstanceOf($class, $a) $a$classのインスタンス
$reflection = new \ReflectionClass('App\Services\TestService');
$method = $reflection->getMethod('testFunc');
$method->setAccessible(true);
$test = $method->invokeArgs(new \App\Services\TestService(), [$user, $corporation->id]);

$this->assertInstanceOf(Test::class, $test);

session

sessionに配列を保存する
actingAsでログインしている風のときやseesionにメッセージがあることで動作が切り替わるときなどに使う

$this->withSession(['errors' => '入力値に誤りがあります。']);
このスクラップは2021/10/22にクローズされました
ログインするとコメントできます