PHPackages                             srlabs/laravel-testing-utilities - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. srlabs/laravel-testing-utilities

ActiveLibrary[Testing &amp; Quality](/categories/testing)

srlabs/laravel-testing-utilities
================================

Helper utilities for testing Laravel Applications

v12.0.0(4y ago)1011.9k2MITPHPPHP ^8.0

Since Mar 30Pushed 4y ago1 watchersCompare

[ Source](https://github.com/stagerightlabs/laravel-testing-utilities)[ Packagist](https://packagist.org/packages/srlabs/laravel-testing-utilities)[ RSS](/packages/srlabs-laravel-testing-utilities/feed)WikiDiscussions dev Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (21)Used By (0)

Laravel Utilities
=================

[](#laravel-utilities)

This package is intended to be a collection of helpful utilities to assist with the development and maintenance of Laravel Applications.

Laravel VersionPackage VersionPackagist Branch7.\*10.\*`"srlabs/laravel-testing-utilities": "~10"`8.\*11.\*`"srlabs/laravel-testing-utilities": "~11"`9.\*12.\*`"srlabs/laravel-testing-utilities": "~12"`To install this package, run

```
$ composer require srlabs/laravel-testing-utilities
```

and then add the service provider to your service providers listing in `app/config/app.php`

```
'providers' => [
    // ...
    'SRLabs\Utilities\UtilitiesServiceProvider'
    // ...
],
```

Testing Assistant
-----------------

[](#testing-assistant)

This utility makes it easy to implement the testing stratgey described by [Chris Duell](https://github.com/duellsy) in his blog post *[Speeding up PHP unit tests 15 times](http://www.chrisduell.com/blog/development/speeding-up-unit-tests-in-php/)*. When running tests that require the use of a database persistence layer, running migrations and seeding the database for each test can take a very long time. Chris instead suggests creating a sqlite database file ahead of time, and making a new copy of that file for each test instead.

This package provides an artisan command ('utility:testdb') that will run your migrations and seeds and save them to a pre-defined sqlite file. Once that is complete, there is a companion trait that you add to your tests which will copy the staging database file to the testing database location when running tests.

You need to define a sqlite database connection in your `config/database.php` file. The connection name can be whatever you would like, but the package will assume a name of 'staging' if you don't provide one.

Default 'staging' connection:

```
$ php artisan utility:testdb
```

Custom 'sqlite\_testing' connection:

```
$ php artisan utility:testdb sqlite_testing
```

You can also specify a Database Seeder class:

```
$ php artisan utility:testdb sqlite_testing --class="SentinelDatabaseSeeder"
```

This command will migrate and seed the sqlite database you have specified.

When you are ready to use this new sqlite file in your tests, add the `TestingDatabase` trait to your test class, and use it as such:

```
use SRLabs\Utilities\Traits\TestingDatabaseTrait;

class FooTest extends TestCase {

    use TestingDatabaseTrait;

    public function setUp()
    {
      parent::setUp();

      $this->prepareDatabase('staging', 'testing');
    }

    public function testSomethingIsTrue()
    {
        $this->assertTrue(true);
    }

}
```

In this example "staging" is the Database connection that represents the pre-compiled sqlite file, and "testing" is a separate connection that represents the database that will be used by the tests. Each time the `setUp()` method is called, the testing sqlite file will be replaced by the staging sqlite file, effectively resetting your database to a clean starting point. You may need to do some extra configuration to have phpunit use your "testing" database.

(Optional) Run Automatically When Running PHPUnit
-------------------------------------------------

[](#optional-run-automatically-when-running-phpunit)

Using this method will have `artisan utility:testdb` execute before any tests are ran **only** if there are new migration changes.

#### 1. Create file `bootstrap/testing.php`:

[](#1-create-file-bootstraptestingphp)

```
