web-dev-qa-db-ja.com

varがphpunitに特定の文字がない空でない文字列であることを表明します

変数がphpunitの(空白ではない)文字列であることを表明したいのですが、文字列が正確な文字列と一致する必要があることを主張したくありません。

たとえば、ユーザー名を取得して、空白以外のユーザー名を正常に取得したいのですが、どのユーザー名を取得したかは正確には気にしません。

それが空でない変数であるか、ある文字列と完全に一致する文字列であるか、または変数がphpunitの助けなしに文字列であると主張することは、非常に簡単です。

$this->assertNotEmpty($username);
$this->assertSame('myusername', $username);
$this->assertTrue(is_string($username));

これらはすべて私が必要としているものに近く、is_stringを使用して実際に適切な条件をテストしていますが、テストが失敗すると有用で有益なメッセージを取得できなくなるため、is_stringを自分で実行するだけでは十分ではありません。実際に返された値のタイプを教えてくれる代わりに、エラーメッセージは役に立たなくなります。

Failed asserting that false is true.

では、phpunitのassertシステムを使用して、varが文字列型で非空白であることをどのようにアサートできますか?

16
Kzqai

すべてのPHPUnitアサーションに独自のメッセージを追加できます。このようなものが機能するはずです:-

$this->assertTrue(is_string($username), "Got a " . gettype($username) . " instead of a string");

それ以外の場合は、

$this->assertInternalType('string', $username, "Got a " . gettype($username) . " instead of a string");

マニュアルを参照

35
vascowhite