2014-04-08 54 views
0

任何人都可以解釋這一點嗎?爲什麼在功能測試中硬編碼URL?

對請求URL進行硬編碼是功能測試的最佳實踐。如果測試 使用Symfony路由器生成URL,它將不會檢測到對可能影響最終用戶的應用程序URL進行的任何更改。

http://symfony.com/doc/current/book/testing.html#working-with-the-test-client

被他們指的是什麼樣的變化呢?爲什麼這是一個問題,如果所有的網址都是使用路由器生成的?

回答

2

如果網址的變化,它影響到書籤,從其他網站,網頁排名的鏈接...如果你測試使用生成的URL,測試會成功,即使你(意外)改變URL模式。

通過使用硬編碼的網址,就可以防止這種情況發生。如果您不小心更改了網址,測試將失敗。如果你想改變它,你可以更新硬編碼的網址以適應新的情況。這樣你就可以控制。

對於某些應用程序或某個特定網站或應用程序中的某些網址,如果url更改可能無關緊要。在這種情況下,您可以生成當然的網址。這是一般性建議,而不是法律。 :)

1

如果網址未硬編碼,生成一個URL模板代碼可能看起來像:

{{ path('examplebundle_home_action') }} 

路由器將隨後擴展爲:

http://www.example.com/action 

如果你的功能測試如上面的path調用,假設你改變了動作的路徑,使得URL現在是:

http://www.example.com/newaction 

由於您的測試參考path調用,它們將繼續通過,因爲它們無縫地引用新的URL。然而,用戶可能不同意 - 他們可能已經收藏舊的URL,也可能在其他地方你的應用程序被稱爲Symfony的以外,等等。在不充分了解影響的情況下更改URL並在功能測試中對其進行硬編碼總是很危險的,這很好地提醒您重要的一些變化。

相關問題