DEV Community

Ghulam Mujtaba
Ghulam Mujtaba

Posted on

2

Introduction to Pest: A PHP Testing Framework

What is Pest?

Pest is a testing framework for PHP that provides a simple and intuitive way to write tests for our code. It's designed to be fast, flexible, and easy to use.

Why use Pest?

We should use Pest because it makes it easy to write tests for our code, which helps to ensure that our code works correctly and catches bugs early. Pest is also fast and flexible, making it a great choice for large and small projects alike.

Where to use Pest in a project?

We can use Pest in any PHP project, big or small. It's a great tool for testing individual components, such as classes or functions, as well as larger systems, such as APIs or web applications. We can use Pest in the tests directory of our project, alongside our code.

Some common use cases for Pest include:

  • Unit testing: Test individual components, such as classes or functions, to ensure they work correctly.
  • Feature testing: Test multiple tests in a single file in a project.
  • Integration testing: Test larger systems, such as APIs or web applications, to ensure they work correctly.
  • Acceptance testing: Test your code against a set of acceptance criteria to ensure it meets the requirements.

Test Implementation

To test either the user is logged in or not, create a new file AuthenticatorTest.php and add this code:

<?php 

use Core\Authenticator;

test('user is logged in or not', function () {
    if ($_Session['user']) {
        $_SESSION['user'] = ['email' => 'mujtabaofficial247@gmail.com'];
    } else {
        unset($_SESSION['user']);
    }

    // Create an instance of the Authenticator class
    $auth = new Authenticator();

    // Test if the user is logged in or not
    expect($auth->isLoggedIn())->toBeFalse();
});
Enter fullscreen mode Exit fullscreen mode

This test code checks if the Authenticator class is working correctly. It sets up the $_SESSION superglobal and then creates an instance of the Authenticator class. Finally, it uses Pest's expect function to assert that the isLoggedIn method returns false when the user is not logged in.

Helper Function

To test user loggedIn or Out add isLoggedInmethod in Authenticator class as:

public function isLoggedIn() {
    return isset($_SESSION['user']) && !empty($_SESSION['user']);
}
Enter fullscreen mode Exit fullscreen mode

This helper function checks if a user is logged in by verifying if the $_SESSION['user'] variable is set and not empty.

Running Tests in Terminal

To run this test, we would use the command php vendor/bin/pest in your terminal. This command runs all tests in the tests directory.

Running Specific Test File

If you want to run a specific test file, you can use the command pest test/Unit/AuthenticatorTest.php. This command runs only the tests in the specified file.

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay