cfx/pspec

PSpec is a Pest plugin for composing multi scenarios tests with a simple API, based on RSpec let

1.0.1 2024-04-17 19:25 UTC

This package is auto-updated.

Last update: 2024-04-17 21:40:19 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

PSpec is a Pest plugin for composing multi scenarios tests with a simple API, based on RSpec let.

Install

composer require cfx/pspec --dev

Simple usage

use function Cfx\PSpec\context;
use function Cfx\PSpec\expectSubject;
use function Cfx\PSpec\get;
use function Cfx\PSpec\let;
use function Cfx\PSpec\subject;

subject(fn () => User::factory()->create(['is_admin' => get('is_admin')]));

context('when is admin', function () {
  let('is_admin', fn() => true);

  it('returns true', function () {
    expectSubject()->is_admin->toBeTrue();
  });
}); 

context('when is not admin', function () {
  let('is_admin', fn() => false);

  it('returns false', function () {
    expectSubject()->is_admin->toBeFalse();
  });
});

Higher order testing

use function Cfx\PSpec\context;
use function Cfx\PSpec\get;
use function Cfx\PSpec\getSubject;
use function Cfx\PSpec\let;

subject(fn () => get('variable'));

context('when using high order testing', function () {
  let('variable', fn () => 2);

  it('can use high order testing')
    ->expect(getSubject(...))
    ->toEqual(2);
});

more examples