我想單元測試使用$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狀態代碼'