具有 Laravel 后端端到端测试的 Vue SPA
Vue SPA with Laravel Backend End-To-End Testing
我有两个独立的项目,一个 Vue SPA 和一个 Laravel 后端。
现在,我想编写一些从 Vue SPA 到 Laravel 后端的端到端测试。我想编写 SPA 测试来进行真正的后端 API 调用。但是 Laravel API 应该知道这是测试调用并像 运行 使用 phpunit 测试时那样处理它们。所以这个调用应该使用 .env.testing 或 phpunit.xml 环境设置,例如使用测试数据库和测试邮件提供商。
那么有没有可能告诉 Laravel,它应该处理带有 env = testing 的请求?
我发现了一个旧的 article from Mohamed Said 朝这个方向发展,设置了一个 cookie。但我希望有更简单的方法,尤其是加载整个 .env.testing 变量?
非常感谢。
我找到了一个有效的解决方案:
我使用特殊的 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.
获取所有环境变量
使用 Laravel Dusk 怎么样?
这样你就可以定义 .env.dusk.{environment} 来覆盖任何环境变量。让一切变得更简单,使用起来很愉快。
我有两个独立的项目,一个 Vue SPA 和一个 Laravel 后端。
现在,我想编写一些从 Vue SPA 到 Laravel 后端的端到端测试。我想编写 SPA 测试来进行真正的后端 API 调用。但是 Laravel API 应该知道这是测试调用并像 运行 使用 phpunit 测试时那样处理它们。所以这个调用应该使用 .env.testing 或 phpunit.xml 环境设置,例如使用测试数据库和测试邮件提供商。
那么有没有可能告诉 Laravel,它应该处理带有 env = testing 的请求?
我发现了一个旧的 article from Mohamed Said 朝这个方向发展,设置了一个 cookie。但我希望有更简单的方法,尤其是加载整个 .env.testing 变量?
非常感谢。
我找到了一个有效的解决方案: 我使用特殊的 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.
获取所有环境变量使用 Laravel Dusk 怎么样? 这样你就可以定义 .env.dusk.{environment} 来覆盖任何环境变量。让一切变得更简单,使用起来很愉快。