我想单元测试使用$resource
的AngularJS服务。为了保持它的独立性,我想用茉莉花的间谍和间谍在$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状态代码'