12

我正在使用 PHPUnit 并尝试检查页面上是否存在文本。assertRegExp 有效,但使用 if 语句我得到错误Failed asserting that null is true.

我知道 $test 返回 null,但如果文本存在,我不知道如何让它返回 1 或 0 或 true/false?感谢任何帮助。

        $element = $this->byCssSelector('body')->text();
        $test = $this->assertRegExp('/find this text/i',$element);

        if($this->assertTrue($test)){
            echo 'text found';
        }
        else{
            echo 'not found';
        }
4

3 回答 3

26

assertRegExp()不会返回任何东西。如果断言失败——意味着没有找到文本——那么下面的代码将不会被执行:

 $this->assertRegExp('/find this text/i',$element);
 // following code will not get executed if the text was not found
 // and the test will get marked as "failed"
于 2013-09-26T23:39:18.307 回答
5

PHPUnit 不是为从断言返回值而设计的。根据定义,断言旨在在失败时中断流程。

如果你需要做这样的事情,你为什么要使用 PHPUnit?使用preg_match

 $test = preg_match('/find this text/i', $element);

 if($test) {
        echo 'text found';
 }
 else {
        echo 'text not found';
 }
于 2013-09-26T23:52:43.753 回答
5

在较新的phpunit 版本中使用此方法:

$this->assertMatchesRegularExpression('/PATTERN/', $yourString);
于 2021-03-18T13:37:36.357 回答