【发布时间】:2015-01-19 20:04:00
【问题描述】:
用例:
我正在使用 Geb/Selenium 编写系统测试(所以在角度之外)。 我想装饰 $http 以在运行时记录所有请求/响应。
关键是:无需接触源代码。
在你急于回答“使用$provide#decorator”之前,例如,
http://blog.xebia.com/2014/08/08/extending-angularjs-services-with-the-decorate-method/
该解决方案对于这个用例意味着在生产代码中添加一个测试钩子......这通常是一件坏事,如果可能的话,我想避免。
更新:Geb 允许您在浏览器窗口中运行 Javascript。所以只是为了它,我运行了教程代码来装饰 $http。不幸的是,它不起作用,因为显然您无法在加载后重新配置应用程序。但即使它确实有效,这也带来了另一个有趣的点——我需要在任何模块有机会使用它之前覆盖 $http 。
【问题讨论】:
-
我宁愿为此使用拦截器,但它们也必须在运行时之前进行配置。不过,您可以滥用转换器,因为它们可以在运行时添加。
-
re:在任何模块有机会使用它之前进行装饰,这就是配置块的想法,它们将在应用程序代码执行之前在应用程序引导期间执行
标签: angularjs decorator angular-decorator