【发布时间】:2017-11-07 14:10:07
【问题描述】:
我正在开发一个具有多个数据库访问权限的应用程序,我想用它进行 PHPUnit 测试。我目前的方法是在config\databases.php 中拥有多个连接(mysql、mysql2、mysql3),这样我就可以在 env 文件中为所有这些连接提供不同的访问权限。因此,模型定义了$connection 变量。在我的第一个功能测试中,我想访问一个页面并查看我在工厂中提供的数据,所以只是为了让事情开始。在我的phpunit.xml 文件中,我已将DB_CONNECTION 指定为sqlite,并且为每个MySql 设置指定value=":memory:"。
稍后编辑
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE_1" value=":memory:"/>
<env name="DB_DATABASE_2" value=":memory:"/>
<env name="DB_DATABASE_3" value=":memory:"/>
</php>
所以上面你可以从PHPUnit中找到相关代码。
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db1
DB_USERNAME=xxx
DB_PASSWORD=xxx
DB_HOST_2=127.0.0.1
DB_PORT_2=3306
DB_DATABASE_2=db2
DB_USERNAME_2=xxx
DB_PASSWORD_2=xxx
DB_HOST_2=127.0.0.1
DB_PORT_2=3306
DB_DATABASE_3=db3
DB_USERNAME_3=xxx
DB_PASSWORD_3=xxx
我遇到的问题是,当我运行测试时,我有这个错误 -> PDOException: SQLSTATE[HY000] [1049] Unknown database ':memory:'.
所以不知何故 Laravel 没有解析内存值。任何建议将不胜感激。 谢谢
【问题讨论】:
-
你的每一个mysql设置为value=:memory:是什么意思?
-
能否请您发布一些相关代码(测试和配置)?
-
您需要发布您的数据库配置文件,因为我假设您在考虑使用
DB_DATABASE_1、DB_DATABASE_2和DB_DATABASE_3而不仅仅是DB_DATABASE时进行了一些重大修改。 -
添加了 .env 文件。谢谢你:)
-
@Devon,只是为了澄清一下这个 url -> laracasts.com/discuss/channels/laravel/…
标签: php laravel laravel-5 phpunit