我正在尝试对使用$resource
. 为了保持隔离,我想使用 Jasmine 的 spyOn 和 spy on$resource
的query()
方法。在我的控制器中,我希望能够使用将query()
成功和错误函数直接传递给查询方法的简短形式,而无需调用$promise.then(success, error)
. 这是可能的,还是我坚持长形式query().$promise.then(success, error)
?
这是我用失败的测试创建的一个 plunker,说明了我的问题:http ://plnkr.co/edit/hVc2YNnwUDNv7IHODOMD?p=preview
我在 SO 上发现了几个声称可以解决问题的问题,但所有问题都在使用我正在使用的组件的旧版本。从 plunker 你可以看到我正在使用 Angular 1.5.2 和 Jasmine 2.4.1。
作为一个相关问题,许多教程表明,在您的控制器中,您可以将 的返回值分配query()
给一个数组,并且随着数据的加载,该数组将被更新。这是最干净的解决方案,但如果发生错误怎么办?我希望如果加载数据时出现问题,您最终会收到一些默认错误通知,或者根本没有发生任何事情。通过拦截器在其他地方处理错误并可能触发事件并以某种通用的非控制器特定方式通知用户的最佳实践是什么?我认为拦截器需要某种方式来确定向用户显示什么消息以提供一些上下文,例如“加载百吉饼似乎需要比平时更长的时间,单击此处重试”而不是“某些请求返回 500状态码'