2

在一个使用 PHPUnit 进行工作测试的现有 Symfony 项目中,我从使用 Browser-Kit 切换到 Panther(以解决测试在 JavaScript 方面的缺点)。

起初,将测试迁移到 Panther 上似乎很简单。但是后来我无法让 Web 应用程序的管理面板的测试正常工作。对任何路由的所有请求都会/admin/*返回一个非常“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>

其他不存在的路由返回常规的 symfony 异常/错误调试页面。

如果我将管理控制器映射到另一条路线(例如/administration/*),我会得到预期/正确的响应。

此外,我无法在 PHPUnit/Panther 管道之外重现该问题,可以这么说:如果我(启用并)使用测试环境运行内部服务器(symfony/web-server-bundle),我会收到预期/正确/admin/*路线上也有回应。

如果我将 PHPUnit/Panther 设置为使用不同的端口,问题仍然存在。

我不知道 PHPUnit/Panther 使用了哪个服务器实例(也因为它在错误的 404 响应中并不明显),但似乎这个服务器实例专门拦截了/admin/*范围之外的路由symfony 网络应用程序以响应 404。

有谁知道在 PHPUnit/Panther 的引擎盖下正在启动什么服务器实例,或者甚至可以说我可以在哪里禁用错误拦截的路由?

操作系统:Ubuntu 18.04
PHP: 7.2.24-0ubuntu0.18.04.1
Symfony:4.4
PHPUnit:7.5
4

1 回答 1

0

Panther 启动一个 PHP 调试服务器,其参数/设置略有不同,这不允许与public目录中的文件夹同名的路由共存。symfony 集成的网络服务器和生产服务器(apache 和 nginx)很乐意为这些重叠的路由提供服务,映射到公共文件夹中的控制器和资源。

请参阅 Panther 问题#491

于 2021-07-24T21:49:56.367 回答