- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 Laravel,这是我的 ./phpunit.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="FeatureTests">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
<testsuite name="UnitTests">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<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_testing" />
</php>
</phpunit>
我正在使用以下命令触发我的一个测试套件:
./vendor/phpunit/phpunit/phpunit --testsuite UnitTests
在我的测试方法中我有:
public function testAllMandatoryData()
{
dump(env('APP_ENV'));
....
}
它显示“本地”,我期待 phpunit.xml 中指定的“测试”
<env name="APP_ENV" value="testing"/>
编辑:附加细节我在 Docker 容器中运行了这个 laravel 应用程序
在 docker-compose.yml 我设置了一些环境变量,例如:
environment:
- APP_ENV=local
- DB_HOST=192.168.0.22
- DB_PORT=33306
- DB_DATABASE=mydatabase
- DB_USERNAME=homestead
- DB_PASSWORD=homestead
我注意到 phpunit.xml 中的指令如下:
<env name="APP_ENV" value="testing"/>
当名称已经在 docker-compose 中时无效。
相反,如果我添加一些未在 docker-compose.yml 中定义的内容,将在 phpunit 运行时正确设置,例如:
<env name="DB_CONNECTION" value="sqlite_test"/>
结束编辑
我错过了什么?
谢谢
最佳答案
使用
<env name="APP_ENV" value="testing" force="true"/>
<env name="CACHE_DRIVER" value="array" force="true"/>
<env name="SESSION_DRIVER" value="array" force="true"/>
<env name="QUEUE_DRIVER" value="sync" force="true"/>
<env name="DB_CONNECTION" value="sqlite_testing" force="true"/>
如果没有 force 参数,它将无法工作。看到这个问题: https://github.com/sebastianbergmann/phpunit/issues/2353和合并的 PR:https://github.com/sebastianbergmann/phpunit/pull/2723
关于xml - 为什么 phpunit 没有得到 phpunit.xml 中指定的正确 APP_ENV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922358/
我现在在构建允许使用 zend for app 构建控制台脚本的机制时遇到问题。例如像: --脚本 ----index.php ----basecmd.php 当 basecmd 包含其他脚本的主类时
以下代码适用于我的开发环境(Ubuntu 14.04 桌面) @if(env('APP_ENV') === 'production') // ... something 但是由于某种原因,生产
默认情况下,Symfony 需要在 Web 服务器上而不是在应用程序中进行配置。就我而言,在服务器上设置这些变量非常复杂。所以,我想要的是在应用程序(php 或 yaml)中设置这些变量没有 DotE
我正在 docker 容器中开发一个新的 Symfony 4.0 应用程序(Apache SSL 容器代理到 Symfony 容器)。一切都适合开发环境。在 docker 容器内,APP_ENV 被设
我正在开发一个项目,该项目使用 process.env.APP_ENV 中的值,以便为当前环境选择合适的配置文件: import prodParams from './production'; imp
我正在使用 Laravel,这是我的 ./phpunit.xml 文件 ./tests/Feature
我设置了两条路线 Route::get('/bugreport', 'SomeController@create') ->middleware('signed') ->name('bu
我似乎找不到任何形式的 APP_ENV 的官方列表.env 中的变量文件。在实践中我使用过 local , dev , development , staging , 和 production .我觉
我正在生产环境中部署 Symfony 4 项目。创建了 .env 文件,其内容为: APP_ENV=prod APP_DEBUG=0 运行 Composer : $ composer install
使用有何区别env('APP_ENV') , config('app.env')或 App::environment()获取应用环境? 我知道env('APP_ENV')将至 $_ENV , conf
我最近将一个新的 Symfony 4 项目部署到生产服务器,我在其中设置(通过 ssh)APP_ENV 和 APP_SECRET 作为环境变量。 printenv 和 set 这两个命令都在其输出中列
我最近将一个新的 Symfony 4 项目部署到生产服务器,我在其中设置(通过 ssh)APP_ENV 和 APP_SECRET 作为环境变量。 printenv 和 set 这两个命令都在其输出中列
我是一名优秀的程序员,十分优秀!