2017 © Pedro Peláez
 

library psr-log-test-doubles

Test Doubles for the PSR-3 Logger Interface

image

wmde/psr-log-test-doubles

Test Doubles for the PSR-3 Logger Interface

  • PHP
  • 4 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 17 % Grown

The README.md

PSR Log Test Doubles

Build Status codecov Type Coverage Psalm level Latest Stable Version Download count, (*1)

Test Doubles for the PSR-3 Logger Interface, (*2)

Motivation

In PHP world, most people create Test Doubles via PHPUnits mocking framework ($this->createMock). (Please beware that a PHPUnit mock really is a Test Double and not necessarily a mock.) While this framework is often helpful, using it instead of creating your own Test Doubles comes with some cost:, (*3)

  • Tools do not understand the PHPUnit magic. You will not be able to use automated refactorings such as method rename without your Test Doubles breaking. You will also get incorrect type warnings.
  • When using LoggerInterface, your test will bind to an implementation detail: if you use log and provide a log level, or call a shortcut method such as error.
  • Developers need to be familiar with the mocking tool.
  • Simple things such as asserting the logger got called with two messages become difficult.

Usage

This library is unit testing tool agnostic. So while these examples use PHPUnit, any testing tool can be used., (*4)

Assert the logger is called twice with expected messages, (*5)

public function testWhenStuffIsDone_loggerGetsCalled() {
    $logger = new LoggerSpy();

    $serviceToTest = new ServiceToTest( $logger /*, other dependencies */ );
    $serviceToTest->doStuff( /**/ );

    $this->assertSame(
        [ 'First message', 'Second message' ],
        $logger->getLogCalls()->getMessages()
    );
}

Assert the logger is called twice, (*6)

$this->assertCount( 2, $logger->getLogCalls() );

Assert the message and log level of the first logger call, (*7)

$firstLogCall = $logger->getFirstLogCall();

$this->assertSame( 'First message', $firstLogCall->getMessage() );
$this->assertSame( LogLevel::ERROR, $firstLogCall->getLevel() );

Release notes

3.2.0 (2022-03-28)

  • Added LogCall::isError
  • Added LogCall::withoutContext
  • Added LogCalls::filter
  • Added LogCalls::getErrors
  • Added LogCalls::map
  • Added LogCalls::withoutContexts

3.1.0 (2022-01-26)

  • Added LogCalls::getLastCall

3.0.0 (2022-01-26)

  • Added support for psr/log 2.x and 3.x
  • Changed minimum PHP version from PHP 7.1 to 8.0
  • Added several property, parameter and return types
  • Added Psalm and PHPStan CI and compliance with level 1 checks

2.2.0 (2017-05-23)

  • Added LoggerSpy::getFirstLogCall convenience method
  • Changed minimum PHP version from PHP 7.0 to 7.1

2.1.0 (2017-01-17)

  • LogCalls now implements Countable

2.0.0 (2017-01-16)

  • LoggerSpy::getLogCalls now returns an instance of LogCalls, which is a collection of LogCall
  • Added LogCalls::getMessages
  • Added LogCalls::getFirstCall

1.1.0 (2016-11-11)

  • Added LoggerSpy::assertNoLoggingCallsWhereMade

1.0.0 (2016-10-18)

  • Initial release with minimal LoggerSpy

The Versions

03/02 2018

dev-master

9999999-dev https://github.com/wmde/PsrLogTestDoubles

Test Doubles for the PSR-3 Logger Interface

  Sources   Download

GPL-2.0+ GPL-2.0-or-later

The Requires

 

The Development Requires

psr log psr-3 test mock test double fixtures fixture mocks spy test doubles spies logger spy loggerspy

23/05 2017

2.2.0

2.2.0.0 https://github.com/wmde/PsrLogTestDoubles

Test Doubles for the PSR-3 Logger Interface

  Sources   Download

GPL-2.0+

The Requires

 

The Development Requires

psr log psr-3 test mock test double fixtures fixture mocks spy test doubles spies logger spy loggerspy

17/01 2017

2.1.0

2.1.0.0 https://github.com/wmde/PsrLogTestDoubles

Test Doubles for the PSR-3 Logger Interface

  Sources   Download

GPL-2.0+

The Requires

 

The Development Requires

psr log psr-3 test mock test double fixtures fixture mocks spy test doubles spies logger spy loggerspy

16/01 2017

2.0.0

2.0.0.0 https://github.com/wmde/PsrLogTestDoubles

Test Doubles for the PSR-3 Logger Interface

  Sources   Download

GPL-2.0+

The Requires

 

The Development Requires

psr log psr-3 test mock test double fixtures fixture mocks spy test doubles spies logger spy loggerspy

11/11 2016

1.1.0

1.1.0.0 https://github.com/wmde/PsrLogTestDoubles

Test Doubles for the PSR-3 Logger Interface

  Sources   Download

GPL-2.0+

The Requires

 

The Development Requires

psr log psr-3 test mock test double fixtures fixture mocks spy test doubles spies logger spy loggerspy

18/10 2016

1.0.0

1.0.0.0 https://github.com/wmde/PsrLogTestDoubles

Test Doubles for the PSR-3 Logger Interface

  Sources   Download

GPL-2.0+

The Requires

 

The Development Requires

psr log psr-3 test mock test double fixtures fixture mocks spy test doubles spies logger spy loggerspy