我是测试的新手,所以我正在学习一门教程。我设置的数据库设置如下:
'sqlite' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
在phpunit.xml中我做了如下配置:
<php>
<env name="APP_ENV" value="testing"/>
<env name="DATABASE_CONNECTION" value="sqlite"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
我不确定发生了什么,我使用工厂创建的数据库种子总是丢失,数据库表也只剩下一个迁移表。
所以发生了什么,我该如何解决?
答案 0 :(得分:0)
我打算将其作为评论发布,但由于缺乏声誉,我无法这样做。
你可以尝试解决当前问题的事情: -
正如您在问题中所说,既没有播种数据也没有找到表格,显然有关数据库配置或迁移文件中的错误的提示。
希望这有帮助。
编辑: - 您可以尝试解决此问题。在 mysql 下面的 config / databae.php 中添加: -
'mysql_testing' => [
'driver' => 'mysql',
'host' => env('TESTING_DB_HOST', 'localhost'),
'database' => env('TESTING_DB_DATABASE', 'forge'),
'username' => env('TESTING_DB_USERNAME', 'forge'),
'password' => env('TESTING_DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
现在您必须在 .env 文件中输入详细信息: -
TESTING_DB_HOST=localhost
TESTING_DB_DATABASE=homestead_testing
TESTING_DB_USERNAME=homestead
TESTING_DB_PASSWORD=secret
注意: - 迁移时仅在测试期间使用以下迁移命令。
php artisan migrate --database=mysql_testing
它用于mysql测试数据库,但你也可以为sqlite做。
答案 1 :(得分:0)
我发现问题是因为我在测试中使用数据库迁移。它有一个回滚功能,所以我只是取消注释:
$this->beforeApplicationDestroyed(function () {
//$this->artisan('migrate:rollback');
RefreshDatabaseState::$migrated = false;
});