настройка тестовой среды laravel

#php #laravel #testing

#php #laravel #тестирование

Вопрос:

Недавно я создал новый laravel 8 проект и хочу запускать тесты в памяти, поэтому я установил среду тестирования на следующее:

  • в phpunit.xml я установил db
 <server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
  
  • Подключение к базе данных config/database.php
 'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],
  
  • .env.testing
 APP_NAME="Laravel 8 Project"
APP_ENV=testing
APP_KEY=base64:kNA1tcEgBCybuoN456B4iRqyvfImfTmdKzqYeYGEJhg=

DB_CONNECTION=sqlite
DB_DATABASE=db.sqlite

TELESCOPE_ENABLED=false
  
  • в тестовом классе:
 <?php

namespace TestsFeature;

use AppModelsUser;
use IlluminateFoundationTestingRefreshDatabase;
use LivewireLivewire;
use TestsTestCase;

class ContactFormComponentTest extends TestCase
{
    use RefreshDatabase;

    /** @test  */
    function create_new_user()
    {
        $user = new User();
        $user->name = 'john doe';
        $user->email = 'john.doe@gmail.com';
        $user->password = 'password';

        $savedUser = $user->save();

        $this->assertTrue($savedUser);
    }
}
  

Я также запустил:

 php artisan config:cache
php artisan cache:clear
  

После всего этого, когда я запускаю php artisan test --filter create_new_user тестовый проход, но он очищает мою реальную базу данных вместо использования :memory:

Любой совет,

Комментарии:

1. Удалось ли вам заставить его работать? У меня такая же / похожая проблема.