2014-11-23 68 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

相关问题