byteout/psr-logger-codeception-module

用于验证PSR3日志记录器记录的消息的Codeception模块。

v2.1.0 2022-09-23 10:05 UTC

This package is auto-updated.

Last update: 2024-09-23 14:33:56 UTC


README

Packagist Version License

用于验证由PSR3日志记录器记录的消息的Codeception模块。

Byteout Software开发。

兼容性

安装

  1. 安装和配置Codeception

  2. 使用composer安装模块

    composer require "byteout/psr-logger-codeception-module" --dev
  3. 在您的测试套件中启用模块 {NAME}.suite.yml

    modules:
        enabled:
            - Byteout\Codeception\Module\PsrLogger

示例

  1. 简单使用

    <?php
        
    $logger = $I->grabLogger();
    $logger->notice('This is logger example.');
    
    $I->seeLoggerHasNotice('This is logger example.');
  2. 跟踪其他服务的日志

    <?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');
  3. 模拟日志

    <?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';
});