Laravel Sail 独立测试数据库

时间:2021-04-25 13:47:08

标签: laravel testing laravel-sail

curl -s "https://laravel.build/example-app" | bash

我使用上面的命令来安装 laravel8 和 sail up

一切都很好。

但是,我也想测试 mysql。

mysql_test:
  image: "mysql:8.0"
  environment:
    MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
    MYSQL_DATABASE: "${DB_DATABASE}"
    MYSQL_USER: "${DB_USERNAME}"
    MYSQL_PASSWORD: "${DB_PASSWORD}"
    MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
  networks:
    - sail

我在上面添加到 docker-composer.yml 并运行 sail up

DB_CONNECTION=mysql
DB_HOST=mysql_test
DB_PORT=3306
DB_DATABASE=laravel8_test
DB_USERNAME=sail
DB_PASSWORD=password

.env.testing

但是当我运行 sail test 时,出现错误

SQLSTATE[HY000] [1044] Access denied for user 'sail'@'%' to database 'laravel8_test' (SQL: select * from `users`)

我运行的测试是

public function test_example()
    {
        dd(User::all());
        $response = $this->get('/');

        $response->assertStatus(200);
    }

我还应该做什么?

1 个答案:

答案 0 :(得分:0)

据我所知,Laravel 不会创建数据库。尝试从数据库客户端创建数据库,例如 dbeaver,然后让迁移运行。但是,最佳做法是使用 memory driver for testing

相关问题