我是PHPUnit(和单元测试)的新手。我想要开发一个测试套件:开发人员可以在本地运行,但也可以在我们的集成系统(Codeship)中运行。我了解到可以使用内存数据库,但似乎这取决于迁移,而我们没有使用(似乎无法很好地处理视图、存储过程、函数、触发器等)。在Laravel中,最好的方法(位置)是什么?用默认数据填充内存数据库(用于所有测试)。
您可以使用SQLite。
从文档中可以得知:
SQLite数据库通常存储在单个普通磁盘文件中。但是,在某些情况下,数据库可能存储在内存中。
将以下内容添加到config/database.php
文件中:
'sqlite_testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
phpunit.xml
文件中,在 <php>
节点下:<env name="DB_CONNECTION" value="sqlite_testing" />
请点击此处以了解更多相关的IT技术内容。
其他解决方案
在storage/
文件夹中创建一个名为database.sqlite
的测试数据库,如果您想要另一个名称或位置,则必须更改config/database.php
文件中的配置信息。以下是默认配置:
'sqlite' => [
'driver' => 'sqlite',
'database' => storage_path('database.sqlite'),
'prefix' => '',
],
使用此命令运行您的迁移:
php artisan migrate --database=sqlite
或者将这一行添加到.env
文件中:
DB_CONNECTION=sqlite
您的应用程序在使用sqlite进行phpunit测试。
现在,您可以运行迁移和测试。完成后,只需将DB_CONNECTION
更改为您在项目中使用的数据库即可。