PhpSpec测试日志是否使用相同的数据编写



我需要测试我的应用程序日志是否使用正确的数据编写(我知道在大多数情况下检查日志不是很重要,但在这种特定情况下非常重要(。

所以日志看起来是这样的:

$this->logger->error(
'Invalid survey provided',
[
'exception' => $e,
'survey' => $survey
]
);

在规范中我有一个代码:

$exception =  new ValidationException(
sprintf(
'Provided survey "%s" does not have all required fields %s',
json_encode($surveysResponse['result'][0]),
json_encode(Survey::$requiredFields)
)
);
$logger->error(
'Invalid survey provided',
[
'exception' => $exception,
'survey' => $surveysResponse['result'][0]
]
)->shouldBeCalled();

和规格失败的b-z-mock不匹配,但我确信,实际记录的是相同调查的相同错误消息和相同错误消息的异常。我不能告诉你确切的问题,因为错误输出是巨大的和修剪。但我有90%的把握在比较异常对象时失败了,因为异常并不是完全相同的对象。

这可能是错误的方法,因为由于日志条目上的时间戳不同,日志条目将不相同。只需preg_match()日志文件,跨越多行,显然带有通配符时间戳。那么,假设它们是";相同的";,当返回的匹配数等于2时(首先假设日志文件被截断(。结合上述条件检查PHPSpecMatcher.beTrue()

最新更新