【问题标题】:PHP Laravel SQLite for both testing and as actual database用于测试和实际数据库的 PHP Laravel SQLite
【发布时间】:2021-03-08 12:13:15
【问题描述】:

我想将 Sqlite 驱动程序用于测试数据库和实际数据库。我的 .env 文件是:

DB_CONNECTION=sqlite

没关系,我可以将 sqlite 用于实际数据库并进行测试,我在 config/database.php 的连接数组下定义了类似的内容:

'testing' => [
    'driver' => 'sqlite',
    'url' => env('DATABASE_URL'),
    'database' => env('DB_DATABASE', database_path('test.sqlite')),
    'prefix' => '',
    'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],

'sqlite' => [
    'driver' => 'sqlite',
    'url' => env('DATABASE_URL'),
    'database' => env('DB_DATABASE', database_path('database.sqlite')),
    'prefix' => '',
    'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],

我的phpunit.xml配置也是这样的:

<php>
      <server name="APP_ENV" value="testing"/>
      <server name="BCRYPT_ROUNDS" value="4"/>
      <server name="CACHE_DRIVER" value="array"/>
      <server name="DB_CONNECTION" value="testing"/>
      <server name="DB_DATABASE" value=":memory:"/>
      <server name="MAIL_MAILER" value="array"/>
      <server name="QUEUE_CONNECTION" value="sync"/>
      <server name="SESSION_DRIVER" value="array"/>
      <server name="TELESCOPE_ENABLED" value="false"/>
</php>

但它仍然使用我的实际数据库进行测试,我尝试在互联网上用不同的方式配置 database.php 和 phpunit.xml,但它仍然无法正常工作。

示例就像使用 mysql 作为实际,使用 sqlite 进行测试,但我想对它们都使用 sqlite。

【问题讨论】:

  • 你的问题是什么?
  • 如何使用 sqlite 进行测试和实际操作。 database.sqlite(实际),test.sqlite(测试)

标签: php laravel sqlite testing


【解决方案1】:

如果您想使用testing.sqlite 进行测试,请注释掉&lt;server name="DB_DATABASE" value=":memory:"/&gt;

因此,您甚至可以使用内存数据库进行测试。

我刚刚测试了两个:

&lt;server name="DB_DATABASE" value=":memory:"/&gt; 它在内存中运行

注释掉&lt;server name="DB_DATABASE" value=":memory:"/&gt; 它使用database_path('testing.sqlite')

即使使用RefreshDatabase 也没有遇到错误

我的 .env 文件的数据库相关条目如下

DB_CONNECTION=sqlite
# DB_DATABASE=database.sqlite
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=l8x
# DB_USERNAME=root
# DB_PASSWORD=

还有phpunit.xml

<php>
    <server name="APP_ENV" value="testing"/>
    <server name="BCRYPT_ROUNDS" value="4"/>
    <server name="CACHE_DRIVER" value="array"/>
    <server name="DB_CONNECTION" value="testing"/>
    <!-- <server name="DB_DATABASE" value=":memory:"/> -->
    <server name="MAIL_MAILER" value="array"/>
    <server name="QUEUE_CONNECTION" value="sync"/>
    <server name="SESSION_DRIVER" value="array"/>
    <server name="TELESCOPE_ENABLED" value="false"/>
</php>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-13
    • 2017-11-24
    • 1970-01-01
    • 2021-12-14
    • 2015-09-16
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多