任何人都可以解释一下吗?
对请求URL进行硬编码是功能测试的最佳实践。如果测试 使用Symfony路由器生成URL,它不会检测到任何更改 可能影响最终用户的应用程序URL。
http://symfony.com/doc/current/book/testing.html#working-with-the-test-client
他们指的是什么样的变化?如果使用路由器生成所有URL,为什么会出现问题?
答案 0 :(得分:4)
如果网址发生变化,则会影响书签,来自其他网站的链接,网页排名......如果使用生成的网址进行测试,即使您(意外)更改了网址格式,测试也会成功。
通过使用硬编码的网址,您可以防止这种情况发生。如果您不小心更改了网址,测试将失败。如果您打算更改它,您只需更新硬编码的URL以匹配新情况。这样你就可以控制了。
对于某些应用程序或特定网站或应用程序中的某些网址,如果网址发生更改,则可能无关紧要。在这种情况下,您可以生成网址。这是一般性建议,而不是法律。 :)
答案 1 :(得分:1)
如果URL未经过硬编码,则生成URL的模板代码可能如下所示:
{{ path('examplebundle_home_action') }}
然后路由器将扩展为:
http://www.example.com/action
如果您的功能测试引用了上述path
调用,则假设您更改了操作的路径,以便现在显示URL:
http://www.example.com/newaction
由于您的测试涉及path
调用,因此它们将继续通过,因为它们无缝地引用新网址。但是,您的用户可能不同意 - 他们可能已将旧URL加入书签,或者可能会在应用程序的其他位置引用到Symfony之外,等等。在没有完全理解影响的情况下更改URL总是很危险的,并且在功能测试中对其进行硬编码是一个很好的提醒,即重要的事情发生了变化。