ancarda / high-test-coverage

[Mirror] Classes and Interfaces to help you get higher test coverage

Home Page:https://sr.ht/~ancarda/high-test-coverage

Repository from Github https://github.comancarda/high-test-coverageRepository from Github https://github.comancarda/high-test-coverage

High Test Coverage

Classes and Interfaces to help you get higher test coverage

License Latest Stable Version Total Downloads builds.sr.ht status

High Test Coverage is a collection of classes and interfaces designed to help you get higher test coverage when using impure parts of the PHP Standard Library. It provides a RandomInt interface which you can use in place of the random_int function, like so:

Pull down with composer:

composer require --dev ancarda/high-test-coverage

Example Usage

<?php

use Ancarda\HighTestCoverage\RandomInt\RandomInt;

final class Genie
{
    public function __construct(private RandomInt $randomInt) {}

    public function fortune(): string
    {
        return 'Your lucky number is ' . $this->randomInt(1, 10);
    }
}

In production, this class would be given an instance of RandomInt\Real, likely via your Dependency Injection container. Under test, you would use one of the many built-in classes, such as Fixed or OneShot, like so:

<?php

use Ancarda\HighTestCoverage\RandomInt\Fixed;

final class GenieTest extends TestCase
{
    public function testFortune(): void
    {
        $genie = new Genie(new Fixed(42));
        self::assertSame('Your lucky number is 42', $genie->fortune());
    }
}

Useful Links

About

[Mirror] Classes and Interfaces to help you get higher test coverage

https://sr.ht/~ancarda/high-test-coverage

License:Other


Languages

Language:PHP 99.2%Language:Shell 0.8%