2013-04-30 75 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它的“仅适用于茉莉花。