assertStringMatchesFormat()


assertStringMatchesFormat(string $format, string $string[, string $message = ''])

$string 不匹配于 $format 定义的格式时报告错误,错误讯息由 $message 指定。

assertStringNotMatchesFormat() 是与之相反的断言,接受相同的参数。


例 A.42: assertStringMatchesFormat() 的用法

  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3.  
  4. class StringMatchesFormatTest extends TestCase
  5. {
  6. public function testFailure()
  7. {
  8. $this->assertStringMatchesFormat('%i', 'foo');
  9. }
  10. }
  11. ?>
  1. phpunit StringMatchesFormatTest
  2. PHPUnit 6.5.0 by Sebastian Bergmann and contributors.
  3.  
  4. F
  5.  
  6. Time: 0 seconds, Memory: 5.00Mb
  7.  
  8. There was 1 failure:
  9.  
  10. 1) StringMatchesFormatTest::testFailure
  11. Failed asserting that 'foo' matches PCRE pattern "/^[+-]?\d+$/s".
  12.  
  13. /home/sb/StringMatchesFormatTest.php:6
  14.  
  15. FAILURES!
  16. Tests: 1, Assertions: 1, Failures: 1.

格式定义字符串中可以使用如下占位符:

  • %e:表示目录分隔符,例如在 Linux 系统中是 /

  • %s:一个或多个除了换行符以外的任意字符(非空白字符或者空白字符)。

  • %S:零个或多个除了换行符以外的任意字符(非空白字符或者空白字符)。

  • %a:一个或多个包括换行符在内的任意字符(非空白字符或者空白字符)。

  • %A:零个或多个包括换行符在内的任意字符(非空白字符或者空白字符)。

  • %w:零个或多个空白字符。

  • %i:带符号整数值,例如 +3142-3142

  • %d:无符号整数值,例如 123456

  • %x:一个或多个十六进制字符。所谓十六进制字符,指的是在以下范围内的字符:0-9a-fA-F

  • %f:浮点数,例如 3.142-3.1423.142E-103.142e+10

  • %c:单个任意字符。