Set Up the Testing Database For Local Testing in Laravel

Set Up the Testing Database For Local Testing in Laravel

Laravel offers a selection of practical tools and assertions to make it simpler to test your database-driven apps. Laravel local testing can easily create test database entries by utilizing your application’s Eloquent models and relationships.

with Laravel model factories and seeders. All of these powerful features will be covered in the documentation that follows. Unit tests focus on a specific section of your code, allowing you to isolate and concentrate on that particular portion. A single procedure is the subject of most unit tests. As a result, tests in your “Unit” test directory cannot access your application’s database or other framework services because they do not boot your Laravel application.

The advantages of unit testing in Laravel, how to set it up for unit testing, how to write and execute unit tests in Laravel, and best practices for writing successful unit tests are all covered in this blog. This post will give you the skills and information you need to master unit testing in Laravel, whether you are a novice to the practice or an experienced developer.

Using a testing database in your Laravel unit tests is important for several reasons:

Isolation

Your tests are kept separate from your development or production databases thanks to the testing database. This means any modifications performed while running a test on the testing database will not impact your other databases.

Consistency

You can make sure that your tests are always run on a consistent set of data by utilizing a testing database. This aids in preventing unexpected test failures brought on by modifications to your production or development database.

Speed

You can speed up the testing database since it is only utilized to run tests. This can speed up the testing process and enable you to receive feedback on your modifications more quickly.

Repeatability

You can ensure that your tests are reproducible by using a testing database. This means that you can repeat your tests and get the same results each time, which can be helpful for debugging and troubleshooting.

Overall, using a testing database in your Laravel unit tests ensures that they are quick, accurate, and consistent. Making improvements to your database interactions also reduces the risk of introducing problems or mistakes in your application.

There are a few essential Laravel testing best practices to remember when writing unit tests in Laravel:

Only test one thing at a time: Each test should be limited to only one technique or feature. 

Use descriptive name: Use descriptive test names for Laravel database testing that makes it apparent what the test is testing. Give your test names that have meaning.

Write tests first: By starting with tests, you can make your code more testable and avoid writing functionality that is challenging to test.

Test edge cases: To guarantee that your code functions correctly in all circumstances, test edge cases such as empty inputs or maximum input values.

These Laravel testing tips and best practices will help you set up your test database. 

Instructions

  • Step 1

The first step is to create a database. This database should be a clone of your real database, which is used by the application but should not contain any data inside the tables. For example, we have given the name “unittest_db” to the new database.

  • Step 2

Create .env.testing in the root folder and paste the below codes

APP_URL=http://localhost
APP_ENV=testing
DB_CONNECTION=mysql
DB_TEST_HOST=127.0.0.1
DB_TEST_PORT=3306
DB_TEST_DATABASE=unittest_db
DB_TEST_USERNAME=root
DB_TEST_PASSWORD=
  • Step 3

Put the below code in config/database.php

Note: below snippet just after mysql array. It’s part of the connections array.

'testing' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_TEST_HOST', '127.0.0.1'),
            'port' => env('DB_TEST_PORT', '3306'),
            'database' => env('DB_TEST_DATABASE', 'forge'),
            'username' => env('DB_TEST_USERNAME', 'forge'),
            'password' => env('DB_TEST_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null
        ],

Now the database is separated for testing purposes and when you run unit tests your real database will not be tempered. Also, your application will use unittest_db during testing.

Below are some useful laravel commands to run the testing.

Run all tests in one shot:

php artisan test

Run single file test:

php artisan test --filter=ProductTest

Execute single method:

php artisan test --filter=ProductTest::test_store

Run all tests in one shot:

php artisan test

If you have installed XDebug on your local machine and want to generate awesome reports of your unit test just run the command:

php artisan test --coverage-html=reports

By following the above steps, you can set up a testing database for local testing in the database. If you are looking for expert developers to do it for you, contact us now. We are a reliable Laravel development company with a pool of talented developers.

Let’s create something beautiful and innovative together! call us now!

Chat with our seniors to see if we have a good match

SHARE IT ON

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

BLOG

Our recent post