如果找到正则表达式文本,PHPUnit 断言为真?

问题描述 投票:0回答:3

我正在使用 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';
        }
php phpunit assert
3个回答
26
投票

assertRegExp()
不会返回任何内容。如果断言失败 - 意味着未找到文本 - 那么以下代码将不会被执行:

 $this->assertMatchesRegularExpression('/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"

12
投票

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

$this->assertMatchesRegularExpression('/PATTERN/', $yourString);

5
投票

PHPUnit 的设计目的不是从断言中返回值。根据定义,断言意味着在失败时打破流程。

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

preg_match

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

 if($test) {
        echo 'text found';
 }
 else {
        echo 'text not found';
 }
© www.soinside.com 2019 - 2024. All rights reserved.