加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHPUnit测试中有没有办法’期望’输出到error_log?

发布时间:2020-12-13 18:04:56 所属栏目:PHP教程 来源:网络整理
导读:在使用phpunit进行单元测试时,有没有办法对从’error_log(“Message”)调用创建的输出运行测试? 示例代码,我的一个函数使用luhn算法测试信用卡: if($checkLuhn ($this-_luhn_check($cardNumber) == false)) { error_log(__METHOD__ . " cardNumber failed
在使用phpunit进行单元测试时,有没有办法对从’error_log(“Message”)调用创建的输出运行测试?

示例代码,我的一个函数使用luhn算法测试信用卡:

if($checkLuhn && ($this->_luhn_check($cardNumber) == false)) {
    error_log(__METHOD__ . " cardNumber failed luhn algorithm check.");
    return false;
}

$checkLuhn是传入的布尔值,告诉它是否进行检查,如果$cardNumber通过,_luhn_check()返回true.问题是,我在这个函数中有多个测试可以返回false.我可以在返回值上使用assertEquals,但也想检查抛出错误的原因.

你可以覆盖error_log或以其他方式在单元测试中获取syslog输出吗?

有几种不同的方法来指导error_log()发送数据的位置.

首先是将error_log()发送到其他地方.一个例子是:

error_log( 'This is a message from error_log()',3,'/dev/stdout' );

那使用了destination option for error_log().

另一种方法是覆盖error_log ini setting in PHP.这看起来像:

$cur_error_log = ini_get( 'error_log' );
ini_set( 'error_log','/dev/stdout' );
error_log( 'This is a message from error_log()' );
ini_set( 'error_log',$cur_error_log );

在这两个选项中,我通常更喜欢在error_log()中使用destination选项.

从那里你可以使用PHPUnit中的expectOutputString()来查找从error_log()发送的数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读