byteout / psr-logger-codeception-module
用于验证PSR3日志记录器记录的消息的Codeception模块。
v2.1.0
2022-09-23 10:05 UTC
Requires
- php: ^8.0
- codeception/codeception: ^4.1.9|^5.0
- psr/log: ^2.0|^3.0
Requires (Dev)
- phpunit/phpunit: ^9.5.20
README
用于验证由PSR3日志记录器记录的消息的Codeception模块。
由Byteout Software开发。
兼容性
安装
-
安装和配置Codeception
-
使用composer安装模块
composer require "byteout/psr-logger-codeception-module" --dev
-
在您的测试套件中启用模块
{NAME}.suite.yml
modules: enabled: - Byteout\Codeception\Module\PsrLogger
示例
-
简单使用
<?php $logger = $I->grabLogger(); $logger->notice('This is logger example.'); $I->seeLoggerHasNotice('This is logger example.');
-
跟踪其他服务的日志
<?php use Psr\Log\LoggerInterface; class HelloWorld { private $logger; public function __construct(LoggerInterface $logger) { $this->logger = $logger; } public function sayHello($name) { $this->logger->info("Hello $name"); } } $logger = $I->grabLogger(); $service = new HelloWorld($logger); $service->sayHello('John'); $I->seeLoggerHasInfo('Hello John');
-
模拟日志
<?php $I->haveWarning('Something bad happened', ['problem' => 'This is more info.']); $I->dontSeeLoggerHasAnyError(); $I->seeLoggerHasAnyWarning(); $I->seeLoggerHasWarningThatContains('bad');
操作
获取日志记录器实例
public function grabLogger(): \Psr\Log\LoggerInterface;
记录消息
public function haveEmergency(string $message, array $context = []); public function haveAlert(string $message, array $context = []); public function haveCritical(string $message, array $context = []); public function haveError(string $message, array $context = []); public function haveWarning(string $message, array $context = []); public function haveNotice(string $message, array $context = []); public function haveInfo(string $message, array $context = []); public function haveDebug(string $message, array $context = []);
示例
$I->haveEmergency('This is emergency'); $I->haveEmergency('This is emergency with context', ['error' => 'This is context array']);
检查是否已记录特定消息
当 context
为 null 时,只匹配消息,忽略上下文。当 context
为数组时,将完全匹配,包括消息。
public function seeLoggerHasEmergency(string $message, array $context = null); public function seeLoggerHasAlert(string $message, array $context = null); public function seeLoggerHasCritical(string $message, array $context = null); public function seeLoggerHasError(string $message, array $context = null); public function seeLoggerHasWarning(string $message, array $context = null); public function seeLoggerHasNotice(string $message, array $context = null); public function seeLoggerHasInfo(string $message, array $context = null); public function seeLoggerHasDebug(string $message, array $context = null);
示例
// matches all 'This is emergency' emergency messages, despite the context $I->seeLoggerHasEmergency('This is emergency'); // matches only message with the given context $I->seeLoggerHasEmergency('This is emergency with context', ['error' => 'This is context array']);
检查是否未记录特定消息
当 context
为 null 时,只匹配消息,忽略上下文。当 context
为数组时,将完全匹配,包括消息。
public function dontSeeLoggerHasEmergency(string $message, array $context = null); public function dontSeeLoggerHasAlert(string $message, array $context = null); public function dontSeeLoggerHasCritical(string $message, array $context = null); public function dontSeeLoggerHasError(string $message, array $context = null); public function dontSeeLoggerHasWarning(string $message, array $context = null); public function dontSeeLoggerHasNotice(string $message, array $context = null); public function dontSeeLoggerHasInfo(string $message, array $context = null); public function dontSeeLoggerHasDebug(string $message, array $context = null);
示例
// fails if any 'This is emergency' emergency message was logged, despite the context $I->dontSeeLoggerHasEmergency('This is emergency'); // fails only when a message with the given content and context was logged $I->dontSeeLoggerHasEmergency('This is emergency with context', ['error' => 'This is context array']);
检查是否已记录任何消息
public function seeLoggerHasAnyEmergency(); public function seeLoggerHasAnyAlert(); public function seeLoggerHasAnyCritical(); public function seeLoggerHasAnyError(); public function seeLoggerHasAnyWarning(); public function seeLoggerHasAnyNotice(); public function seeLoggerHasAnyInfo(); public function seeLoggerHasAnyDebug();
检查是否未记录任何消息
public function dontSeeLoggerHasAnyEmergency(); public function dontSeeLoggerHasAnyAlert(); public function dontSeeLoggerHasAnyCritical(); public function dontSeeLoggerHasAnyError(); public function dontSeeLoggerHasAnyWarning(); public function dontSeeLoggerHasAnyNotice(); public function dontSeeLoggerHasAnyInfo(); public function dontSeeLoggerHasAnyDebug();
检查是否记录了包含子字符串的消息
public function seeLoggerHasEmergencyThatContains(string $message); public function seeLoggerHasAlertThatContains(string $message); public function seeLoggerHasCriticalThatContains(string $message); public function seeLoggerHasErrorThatContains(string $message); public function seeLoggerHasWarningThatContains(string $message); public function seeLoggerHasNoticeThatContains(string $message); public function seeLoggerHasInfoThatContains(string $message); public function seeLoggerHasDebugThatContains(string $message);
示例
// matches all emergency messages containing 'emergency' substring $I->seeLoggerHasEmergencyThatContains('emergency');
检查是否未记录包含子字符串的消息
public function dontSeeLoggerHasEmergencyThatContains(string $message); public function dontSeeLoggerHasAlertThatContains(string $message); public function dontSeeLoggerHasCriticalThatContains(string $message); public function dontSeeLoggerHasErrorThatContains(string $message); public function dontSeeLoggerHasWarningThatContains(string $message); public function dontSeeLoggerHasNoticeThatContains(string $message); public function dontSeeLoggerHasInfoThatContains(string $message); public function dontSeeLoggerHasDebugThatContains(string $message);
示例
// fails is any emergency message containing 'emergency' substring was logged $I->dontSeeLoggerHasEmergencyThatContains('emergency');
检查是否记录了匹配正则表达式的消息
public function seeLoggerHasEmergencyThatMatchesRegex(string $regex); public function seeLoggerHasAlertThatMatchesRegex(string $regex); public function seeLoggerHasCriticalThatMatchesRegex(string $regex); public function seeLoggerHasErrorThatMatchesRegex(string $regex); public function seeLoggerHasWarningThatMatchesRegex(string $regex); public function seeLoggerHasNoticeThatMatchesRegex(string $regex); public function seeLoggerHasInfoThatMatchesRegex(string $regex); public function seeLoggerHasDebugThatMatchesRegex(string $regex);
示例
// matches all emergency messages passing regex '/emergency/i' $I->seeLoggerHasEmergencyThatMatchesRegex('/emergency/i');
检查是否未记录匹配正则表达式的消息
public function dontSeeLoggerHasEmergencyThatMatchesRegex(string $regex); public function dontSeeLoggerHasAlertThatMatchesRegex(string $regex); public function dontSeeLoggerHasCriticalThatMatchesRegex(string $regex); public function dontSeeLoggerHasErrorThatMatchesRegex(string $regex); public function dontSeeLoggerHasWarningThatMatchesRegex(string $regex); public function dontSeeLoggerHasNoticeThatMatchesRegex(string $regex); public function dontSeeLoggerHasInfoThatMatchesRegex(string $regex); public function dontSeeLoggerHasDebugThatMatchesRegex(string $regex);
示例
// fails is any emergency message passing regex '/emergency/i was logged $I->dontSeeLoggerHasEmergencyThatMatchesRegex('emergency');
检查是否使用回调记录了消息
public function seeLoggerHasEmergencyThatPasses(callable $matcher); public function seeLoggerHasAlertThatPasses(callable $matcher); public function seeLoggerHasCriticalThatPasses(callable $matcher); public function seeLoggerHasErrorThatPasses(callable $matcher); public function seeLoggerHasWarningThatPasses(callable $matcher); public function seeLoggerHasNoticeThatPasses(callable $matcher); public function seeLoggerHasInfoThatPasses(callable $matcher); public function seeLoggerHasDebugThatPasses(callable $matcher);
示例
$I->seeLoggerHasEmergencyThatPasses(function ($record) { return $record['message'] === 'Test message' && $record['context']['error'] = 'Test error'; });
检查是否未使用回调记录了消息
public function dontSeeLoggerHasEmergencyThatPasses(callable $matcher); public function dontSeeLoggerHasAlertThatPasses(callable $matcher); public function dontSeeLoggerHasCriticalThatPasses(callable $matcher); public function dontSeeLoggerHasErrorThatPasses(callable $matcher); public function dontSeeLoggerHasWarningThatPasses(callable $matcher); public function dontSeeLoggerHasNoticeThatPasses(callable $matcher); public function dontSeeLoggerHasInfoThatPasses(callable $matcher); public function dontSeeLoggerHasDebugThatPasses(callable $matcher);
示例
$I->dontSeeLoggerHasEmergencyThatPasses(function ($record) { return $record['message'] === 'Test message' && $record['context']['error'] = 'Test error'; });