結果が整数(1,2,3 ...)であることをテストできるようにしたいのですが、関数は任意の数を返すことができます。
$new_id = generate_id();
私はそれが次のようなものになると思っていました:
$this->assertInstanceOf('int', $new_id);
しかし、私はこのエラーを受け取ります:
PHPUnit_Framework_Assert :: assertInstanceOf()の引数#1はクラス名またはインターフェイス名でなければなりません
元の答えは後世のために以下に与えられますが、他の答えで示唆されているようにassertInternalType()
を使用することを強くお勧めします。
元の回答:
Is_int()でassertTrueを使用するだけです。
$this->assertTrue(is_int($new_id));
私はこの構造をよりよく使用すると思います:
$this->assertThat($new_id, $this->logicalAnd(
$this->isType('int'),
$this->greaterThan(0)
));
これは、$ new_id変数のタイプだけでなく、この変数が0より大きいかどうかをチェックするため(idを負またはゼロにすることはできません)、これがより厳密で安全であるためです。
PHPUnit 8以降、他のアプローチは非推奨になり、assertInternalType()
はこのエラーをスローして失敗します:
assertInternalType()は非推奨であり、PHPUnit 9では削除されます。テストをリファクタリングして、assertIsArray()、assertIsBool()、assertIsFloat()、assertIsInt()、assertIsNumeric()、assertIsObject()、assertIsResource()、assertIsString()、代わりにassertIsScalar()、assertIsCallable()、またはassertIsIterable()を使用します。
現在、この目的でassertIsNumeric()
またはassertIsInt()
を使用することをお勧めします。
この答えは、結果が整数または整数の文字列であることを確認する方法を知りたい人向けです。 (問題はいくつかのコメントに表示されます):
$this->assertEquals( 1 , preg_match( '/^[0-9]+$/', $new_id ),
$new_id . ' is not a set of digits' );
ここでは、preg_matchが「1」を返すことを確認します。preg_matchは、すべての文字列が数字であることをテストします。