Подтвердить что ты не робот

Утвердить, что var - это непустая строка, не содержащая особых символов в phpunit

Я хочу утверждать, что переменная является (непустой) строкой в ​​phpunit, но я не хочу утверждать, что строка должна соответствовать любой точной строке.

Например, я хочу вытащить имя пользователя и убедиться, что я успешно получил некоторое не пустое имя пользователя, но мне все равно, какое имя пользователя я получил.

Я могу довольно легко утверждать, что это непустая переменная, или что это строка, точно соответствующая некоторой строке, или утверждающая, что var является строкой без помощи phpunit:

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

Все они близки к тому, что мне нужно, с использованием is_string, который действительно тестирует правильные условия, но сама команда is_string недостаточно хороша, потому что, когда сбой теста, я не могу получить полезное информативное сообщение вместо того, чтобы сообщать мне, какой тип значения был фактически возвращен, сообщение об ошибке становится бесполезным:

Failed asserting that false is true.

Итак, как я могу утверждать, что var имеет тип string и не пуст, используя систему утверждения phpunit?

4b9b3361

Ответ 1

Вы можете добавить свои собственные сообщения ко всем утверждениям 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");

См. руководство