2013-04-30 76 views
4

我正在寫QUnit測試控制器。在模塊的設置功能,我寫了下面的語句來得到$ httpBackend對象:

var injector = angular.injector(['ng']); 
var httpBackend = injector.get('$httpBackend'); 

在測試中,獲得了模擬響應配置如下:

httpBackend.expectGET(url).respond([]); 

該測試規範在此語句中失敗並顯示以下錯誤:對象不支持屬性或方法expectGET

我能夠獲取其他對象,如控制器,使用相同注入器引用注入的作用域。

我在這裏錯過了什麼嗎?

回答

4

我問Scott Allen關於這個問題,他回答我一個JSFiddle,解決了這個問題。他說,下面的裝飾是必不可少的,當我們使用$ httpBackend或QUnit測試在角mocks.js定義的任何其它模擬:

$provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator); 

我用這種方法在一個示例應用程序,並在博客中我的學習:http://sravi-kiran.blogspot.com/2013/06/UnitTestingAngularJsControllerUsingQUnitAndSinon.html

+0

+1真棒修復! – moesef 2013-10-22 23:34:37

1

您必須設置角度使用$ httpBackendangular-mocks.js 其中包含了expectGET方法。

但根據the docs它的「僅適用於茉莉花。