我正在使用Larave5和Codeception,并且我想使用内存中的SQLite数据库进行单元测试,但是,我似乎无法将我的环境设置为Codeception中的“测试”。我正在使用Laravel5模块,并在我的unit.suite.yml文件中定义了以下内容:
class_name: UnitTester
modules:
enabled: [Asserts, UnitHelper, Laravel5]
config:
Laravel5:
environment_file: .env.testing我有一个定义所有本地设置的.env文件,还有一个定义所有特定于测试的设置的.env.testing文件。然而,它似乎从未真正正确地设置过环境。
为了测试我刚刚做的环境:
$this->assertEquals('testing', \App::environment());我总是得到这样的回答:
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'testing'
+'local'有人知道我做错了什么吗?
发布于 2015-04-08 10:53:59
您是否在.env.testing文件中设置了环境名称?
APV_ENV=testing发布于 2017-03-08 11:18:54
这可能是因为您在全局codeception配置中定义了env文件。在项目根目录的codeception.yml文件中,检查params的值,应该如下所示
params:
- .env.testing发布于 2015-09-10 05:07:00
我对.env完全陌生,但我刚刚发现在我的本地机器和(例如) Codeship上运行测试的唯一方法就是在我需要的时候符号链接laravel。(我知道-这不是一种非常干净的方式,但嘿,它是有效的)
我的本地.env文件旁边有:
#.env.testing
APP_ENV=testing
DB_CONNECTION=default_mysql
DB_DATABASE=test_db
... etc和:
#.env.codeship
APP_ENV=codeship
DB_CONNECTION=codeship对于本地测试,我使用了一个别名:
alias pl='rm .env; ln -s .env.testing .env; phpunit; rm .env; ln -s .env.local .env'其中.env.local保存了我的本地.env文件的副本。
对于Codeships测试流水线:
ln -s .env.codeship .env
php artisan migrate --seed
phpunit数据库配置:
// CODESHIP
'codeship' => [
'driver' => 'mysql',
'username' => getenv('MYSQL_USER'),
'password' => getenv('MYSQL_PASSWORD'),
// etc
],
// LOCAL DEV // PHPUNIT
'default_mysql' => [
'driver' => 'mysql',
'username' => env('DB_USERNAME', 'localhost'),
'password' => env('DB_PASSWORD', 'forge'),
// etc
],如果有人有更好的想法,我很高兴听到。
https://stackoverflow.com/questions/29503940
复制相似问题