我有两个独立的项目,一个Vue SPA和一个Laravel后端。
现在,我想编写一些从Vue SPA到Laravel后端的端到端测试。我想编写进行真正的后端API调用的SPA测试。但是Laravel API应该知道这是测试调用,并且像使用phpunit运行测试一样处理它们。因此,此调用应使用.env.testing或phpunit.xml env设置,例如使用测试数据库和测试邮件提供程序。
那么有可能告诉Laravel,它应该使用env = testing处理请求吗?
我找到了一个古老的article from Mohamed Said,它朝着这个方向移动并设置了cookie。但我希望有一种更简便的方法,尤其是在加载整个.env.testing变量时?
非常感谢。
答案 0 :(得分:0)
我找到了一个可行的解决方案: 我创建一个带有特殊nginx参数的新子域:
fastcgi_param TESTING_DOMAIN TRUE;
在Laravel Homestead中,可以在Homestead.yaml中轻松完成此操作:
- map: testing.mydomain.test
to: /home/vagrant/code/mydomain/public
schedule: true
backup: false
php: "7.4"
params:
- key: TESTING_DOMAIN
value: "TRUE"
然后在Laravel中,我将其添加到bootstrap / app.php中:
/*
|--------------------------------------------------------------------------
| Loading environment
|--------------------------------------------------------------------------
|
| This is project specific, loading .env.testing on testing domains, if:
| fastcgi_param TESTING_DOMAIN TRUE;
|
*/
if ($_SERVER["TESTING_DOMAIN"] ?? null) {
$app->loadEnvironmentFrom('.env.testing');
}
然后我可以打电话给testing.mydomain.test,它可以正常工作:
ddd(\App::environment()); // => "testing" - from .env.testing
我现在从.env.testing中获取了所有环境变量。