当我在Symfony中运行功能测试时,我的绝对链接不会像在“真实”测试环境中那样出现。例如,我输出的链接如下:
echo url_for("@homepage", true);
它会显示为http://localhost/index.php/
,而如果我实际访问浏览器中的测试网站,则会显示为http://example.com.localhost/frontend_test.php/
现在,我假设这种情况正在发生,因为测试环境对我的本地虚拟服务器设置等一无所知,所以它无法知道它的“真实”绝对URL应该是什么。
但是这使我的测试变得更加困难,而不是“真实”。让我的测试通过匹配一些奇怪的链接,如果我点击它就不会真正起作用感觉有点不对。
如果我的测试浏览器的绝对链接看起来与我的真实环境的绝对链接相同,那么最好的结果可能就是这样,因此我可以根据真实系统输出的值轻松测试结果,例如:主页的绝对链接看起来就像它在实时系统中所做的那样:
http://example.com/
而不是
http://localhost/index.php
人们通常如何处理这个问题?我可以根据主机名和控制器“告诉”测试浏览器其绝对URL应该在哪里,包括删除“index.php”,从而从测试框架中获取更真实的URL吗?
(这些网址是为Atom Feed和电子邮件生成的,这就是为什么我需要它们是绝对的。相对链接工作正常。)
答案 0 :(得分:2)
在我看来,您的网站应该适用于任何域名。测试主机名绑定测试。
我认为您需要检查链接是否是绝对的(使用regexp轻松完成)。
我几乎找不到测试特定域的必要性(除非您使用多个域;在这种情况下,域应该是可配置的。)
编辑:
您可以使用传递给浏览器构造函数的第一个参数来实际更改主机名:
$test = new sfTestFunctional(new sfBrowser('mydomain.com'));
我从未尝试过。