2014-11-23 69 views
1

我正在開發一個基於web應用的Grails,其客戶有自己的子域名。我通過請求URL在我的UrlMappings中獲取客戶端標識,並將這些信息放在控制器將要使用的params對象中。授予此場景正確性的最佳方式和測試類型是什麼?我在尋找獨立於平臺的解決方案(我不想編輯/ etc/hosts中每臺機器的測試將運行上的文件)如何測試每個客戶端都有子域的Grails Web應用程序?

回答

0

我們實現我們想要的(我一個什麼樣的不同的方式將對您的UrlMappings解決方案感興趣)。

我寫了一篇Groovy特質(類似SubdomainAware)和每個控制器implements它。這種特質則有嗅着從request對象的域,並獲取客戶域對象(所以在我的控制器,我可以做的事情一樣User.findAllByCustomer(customer))的吸氣劑(像getCustomer)。

對於功能和單元測試我提供一個額外的GET或POST參數forceDomain這我SubdomainAware特質也尋找(雖然只在非生產環境),並優先於實際要求的領域。這使我可以在測試中模擬我想要的任何子域。這個問題之前

+0

我UrlMappings確定的子域。但是,過了一段時間我的結論是,最好的辦法是創造任何CONTROLER,即提取子域名並使用該值的請求屬性的任何行動前的過濾器,以這樣的方式,任何行動能夠恢復該值 – Lucas 2014-11-23 19:58:29

+0

那麼怎麼樣做這樣的事情在你的過濾器代碼:'如果(Environment.current = Environment.PRODUCTION && params.mockDomain!){返回params.mockDomain}其他{/ *用於獲取子域* /真正的代碼}'(在假設代碼必須返回使用的子域;您可能需要修改它)。然後,您可以在測試中使用'mockDomain' GET或POST參數來強制域。 – 2014-11-24 09:26:27

相關問題