如何通过迁移使用Codeception在Laravel 4中正确填充DB,而不是使用dump

Cys*_*and 1 php laravel-4 codeception

我想测试一下我的Laravel 4应用程序.但是,如果不创建数据库,我就无法做到.问题是,我想要解决这些问题:

  • 单独的DB用于测试和开发(在内存中也会很好)
  • 在测试之前进行迁移和种子
  • 测试后清除数据库

怎么接近?

tli*_*kos 6

我想这会帮助你开始

1.覆盖数据库设置以仅进行测试

在app/config/tests内部创建一个名为database.php的新文件,并在其中放置:

return array(

  'default' => 'mysql',

  'connections' => array(

    'mysql' => array(

      'driver' => 'mysql',

      'host' => 'localhost',

      'database' => 'TEST_DB_NAME', // Create also the Database

      'username' => 'USERNAME',

      'password' => 'PASSWORD',

      'charset' => 'utf8',

      'collation' => 'utf8_unicode_ci',

      'prefix' => '',

    )
  )
);
Run Code Online (Sandbox Code Playgroud)

该数据库仅用于测试目的.

2.将此信息添加到codeception.yml中

modules:

  config:

    Db:

      dsn: 'mysql:host=localhost;dbname=TEST_DB_NAME'

      user: 'USERNAME'

      password: 'PASSWORD'

      dump: app/tests/_data/dump.sql
Run Code Online (Sandbox Code Playgroud)

3.迁移并播种测试数据库

php artisan migrate --seed --env="testing"
Run Code Online (Sandbox Code Playgroud)

4.清理数据库

php artisan migrate:reset --env="testing"
Run Code Online (Sandbox Code Playgroud)