通过PHPUnit

时间:2018-05-18 18:57:26

标签: phpunit newline

我创建了一个通过正则表达式解析内容的php库。其中一个正则表达式是'#\n-{3,}#'来解析---之前只有一个中断,一个新行。

我还使用PHPUnit编写了所有方法的测试,并且总是因为使用新行正则表达式而导致测试失败。我总是用assertSame()

进行测试

我尝试将后续字符串设置为输入:

  1. $input = PHP_EOL . '---';
  2. $input = '<br>---';
  3. $input = ' ---'; // with break in code
  4. 正如所料,我设定了:

    • '<hr/>'

    但是总是失败并且出错。如果我将此变量发送到断言检查它将失败并解析不是新行。只有没有正则表达式中的\n,如'#-{3,}#',它才能正常运行而且没有错误。

    此外,如果我之前使用带有字符串的新行作为测试的输入,它也可以像

    一样工作
    • $input = "test\n---";

    但是我想在没有字符串的情况下进行测试,只能从一个新行开始。

    前端的解析工作正常,如果内容包含中断并且后跟3 -,它会从我的降价文件中通过此正则表达式替换。

    如何在PHPUnit中将assertSame()函数设置为字符串之前的新行?

1 个答案:

答案 0 :(得分:0)

问题是你在模式中使用单引号。

在PHP中\n表示&#34;新行&#34;仅在使用双引号时才在字符串中。

$input = PHP_EOL . '---';

preg_match("#\n-{3,}#", $input); // this will match

请参阅https://3v4l.org/EpEGf