2016-11-28 3 views
5

Я использую Laravel 5.3.22 и хочу выполнить модульное тестирование моего приложения, используя базу данных sqlite в памяти, переносящую/откатывающуюся назад для каждого теста, как сказано here. Это раздел Connections мой database.php конфигурации:Laravel игнорирует подключение к базе данных тестирования

'mysql' => [ 
      'driver' => 'mysql', 
      'host'  => env('DB_HOST', 'localhost'), 
      'database' => env('DB_DATABASE', 'forge'), 
      'username' => env('DB_USERNAME', 'forge'), 
      'password' => env('DB_PASSWORD', ''), 
      ... 
     ], 

     'testing' => [ 
      'driver' => 'sqlite', 
      'database' => ':memory:', 
      'prefix' => '', 
     ], 

Это PHPUnit окр конфигурации:

<php> 
    <env name="APP_ENV" value="testing"/> 
    <env name="CACHE_DRIVER" value="array"/> 
    <env name="SESSION_DRIVER" value="array"/> 
    <env name="QUEUE_DRIVER" value="sync"/> 
    <env name="DB_CONNECTION" value="testing"/> 
</php> 

PHPUnit конфигурация предполагает, что Laravel Шоуда использовать «тестирование» подключение SQLite для тестирования, но его не волнует и продолжается с основным соединением mysql. Это не вариант, у меня большая и сложная схема, и она не может использоваться для модульного тестирования с помощью mysql. Как я могу продолжить? Я не могу высмеять построитель запросов, так как мне нужно утверждать его результаты.

ответ

2

Я выяснил, что я использовал конфигурационное кэширование в своей локальной среде, и это предотвращает использование Larvel в конфигурации phpunit. команда config: clear artisan помогла. Я также изменил драйвер кэша файлов на массив, один для моего локального env.

+0

большое спасибо .. я только что сэкономил время –

Смежные вопросы