4

PHPUnit には、値の型をチェックするアサーションがありますか

関数:

public function getTaxRate()
{
    return 21;  
}

返された値が数値であることをテストしたいと思います。

申し訳ありませんが、PHPUnit テストは初めてです。

SimpleTest には assertIsA(); があることがわかりました。PHPUnitに似たものはありますか。

よろしく

4

1 に答える 1

8

何かが「数値である」という概念は、php のような弱い型付けの言語では少しあいまいです。PHPでは、1 + "1"2です。文字列"1"は数字ですか?

Phpunit アサーションassertInternalType()は次のことに役立ちます。

$actual = $subject->getTaxRate();
$this->assertIternalType('int', $actual);

ただし、アサーションを論理演算子と組み合わせることはできません。したがって、「42.0 が整数または浮動小数点数のいずれかであると主張する」という考えを簡単に表現することはできません。このようなより集中的なアサーションは、プライベート ヘルパー アサーション メソッドにグループ化できます。

private function assertNumber($actual, $message = "Is a number")  {
    $isScalar = is_scalar($actual);
    $isNumber = $isScalar && (is_int($actual) || is_float($actual));
    $this->assertTrue($isNumber, $message);
}

そして、同じテストケース クラス内のテストでそれを使用するだけです。

$actual = $subject->getTaxRate();
$this->assertNumber($actual);

独自のカスタム アサーションを作成することもできます。数値疑似型アサーションを頻繁に実行する必要がある場合は、おそらくこれが最善の策です。それがどのように行われるかを示すPHPUnitの拡張を参照してください。

関連している:

于 2013-09-20T10:40:01.720 に答える