PHPUnit+Panther hijacks/intercepts /admin 路由
PHPUnit+Panther hijacks/intercepts /admin route
在一个在 PHPUnit 中进行工作测试的现有 Symfony 项目中,我从使用 Browser-Kit 切换到 Panther(以解决测试在 JavaScript 方面的缺点)。
起初,将测试迁移到 Panther 上似乎很简单。但是后来我无法让网络应用程序管理面板的测试正常工作。对任何路由的所有请求 /admin/*
return 非常 "phpinfo()-/apache-feely" 404 响应:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>404 Not Found</title><style>
body { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }
h1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }
h1, p { padding-left: 10px; }
code.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}
</style>
</head><body><h1>Not Found</h1><p>The requested resource <code class="url">/admin/company/new</code> was not found on this server.</p></body></html>
其他不存在的路由 return 常规 symfony exception/error 调试页面。
如果我将管理控制器映射到另一条路由(例如 /administration/*
),我会收到 expected/correct 响应。
此外,我无法在 PHPUnit/Panther 管道之外重现该问题,可以这么说:如果我(启用和)运行 内部服务器 (symfony/web-server-bundle) 进行测试-环境,我也在 /admin/*
路线上收到 expected/correct 回复。
如果我设置 PHPUnit/Panther 使用不同的端口,问题仍然存在。
我不知道 PHPUnit/Panther 使用了哪个服务器实例(也是因为它在错误的 404 响应中并不明显),但似乎这个服务器实例专门拦截了/admin/*
路由超出 symfony 网络应用程序的范围以响应 404。
有谁知道在 PHPUnit/Panther 中正在启动什么服务器实例,或者甚至可以说我在哪里可以禁用错误拦截的路由?
OS: Ubuntu 18.04
PHP: 7.2.24-0ubuntu0.18.04.1
Symfony: 4.4
PHPUnit: 7.5
Panther 启动了一个 PHP 调试服务器,它与 parameters/settings 略有不同,它不允许与 public
目录中的文件夹同名的路由共存。 symfony 集成的网络服务器和生产服务器(apache 和 nginx)愉快地提供这种重叠的路由,映射到 public 文件夹中的控制器和资源。
参见 Panther 问题 #491。
在一个在 PHPUnit 中进行工作测试的现有 Symfony 项目中,我从使用 Browser-Kit 切换到 Panther(以解决测试在 JavaScript 方面的缺点)。
起初,将测试迁移到 Panther 上似乎很简单。但是后来我无法让网络应用程序管理面板的测试正常工作。对任何路由的所有请求 /admin/*
return 非常 "phpinfo()-/apache-feely" 404 响应:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>404 Not Found</title><style>
body { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }
h1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }
h1, p { padding-left: 10px; }
code.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}
</style>
</head><body><h1>Not Found</h1><p>The requested resource <code class="url">/admin/company/new</code> was not found on this server.</p></body></html>
其他不存在的路由 return 常规 symfony exception/error 调试页面。
如果我将管理控制器映射到另一条路由(例如 /administration/*
),我会收到 expected/correct 响应。
此外,我无法在 PHPUnit/Panther 管道之外重现该问题,可以这么说:如果我(启用和)运行 内部服务器 (symfony/web-server-bundle) 进行测试-环境,我也在 /admin/*
路线上收到 expected/correct 回复。
如果我设置 PHPUnit/Panther 使用不同的端口,问题仍然存在。
我不知道 PHPUnit/Panther 使用了哪个服务器实例(也是因为它在错误的 404 响应中并不明显),但似乎这个服务器实例专门拦截了/admin/*
路由超出 symfony 网络应用程序的范围以响应 404。
有谁知道在 PHPUnit/Panther 中正在启动什么服务器实例,或者甚至可以说我在哪里可以禁用错误拦截的路由?
OS: Ubuntu 18.04 PHP: 7.2.24-0ubuntu0.18.04.1 Symfony: 4.4 PHPUnit: 7.5
Panther 启动了一个 PHP 调试服务器,它与 parameters/settings 略有不同,它不允许与 public
目录中的文件夹同名的路由共存。 symfony 集成的网络服务器和生产服务器(apache 和 nginx)愉快地提供这种重叠的路由,映射到 public 文件夹中的控制器和资源。
参见 Panther 问题 #491。