Higher Order Tests

Overview

Pest also provides support for higher order tests, which are shortcuts for performing common actions while writing your tests.

The best way to think about this is: If you don't provide a closure, the chained methods are going to create a closure for you. Here is the most basic example:

test('true is true')->assertTrue(true);

The code above is equivalent to:

test('true is true', function () {
    $this->assertTrue(true);
});

Pest will properly delegate to any given method and its arguments of the test itself.

Warning: You can't access runtime helpers in Laravel, like route, with higher-order tests.

The exact same rules apply to global functions like beforeEach or afterEach. Let's take a look at an example using the Laravel Framework:

beforeEach()->withoutMiddleware();

it('has home')
    ->get('/admin')
    ->assertSee('Hello World');

Next section: Custom Helpers →