milroyfraser/pest-plugin-gwt

Given When Then(GWT) Plugin for Pest
32,829 106
Install
composer require milroyfraser/pest-plugin-gwt
Latest Version:v2.0.0
PHP:^8.2
License:MIT
Last Updated:Sep 26, 2024
Links: GitHub  ·  Packagist
Maintainer: milroy.me

Given When Then (GWT) Plugin for Pest

A simple API allows you to structure your tests focused on the behaviour. Given-When-Then separation makes the test easier to understand at a glance.

Install

composer require milroyfraser/pest-plugin-gwt --dev

Usage

use App\Exceptions\BlockedUserException;
use App\Models\User;
use function Pest\Gwt\scenario;
use function Pest\Laravel\assertDatabaseHas;

scenario('activate user')
    ->given(fn() => User::factory()->create())
    ->when(fn(User $user) => $user->activate())
    ->then(fn(User $user) => assertDatabaseHas('users', [
        'id' => $user->id,
        'activated' => true,
    ]));

scenario('activate blocked user')
    ->given(fn() => User::factory()->blocked()->create())
    ->when(fn(User $user) => $user->activate())
    ->throws(BlockedUserException::class);

more examples

Given a state

Given method accepts a Closure. This is where we Arrange application state. The return values will become argument/s of the when closure.

When I do something

When method accepts a Closure. This is where we Act (perform) the operation. The return values will become argument/s of the then closure.

Then I expect an outcome

Then method accepts a Closure. This is where we Assert the outcome.

If you want to start testing your application with Pest, visit the main Pest Repository.

Pest was created by Nuno Maduro under the Sponsorware license. It got open-sourced and is now licensed under the MIT license.

Related Packages

cfx/pspec

PSpec is a Pest plugin for composing multi scenarios tests with a simple API, ba...

588 0
quadraecom/pest-plugin-selectors

Add CSS selector-based testing capabilities to Pest

2,035 1
nekofar/pest-plugin-mock-client

Pest Plugin for Mock HTTP client

22 1
pestphp/pest-plugin-agent

AI agent verification plugin for Pest

162,020 6