在QUnit测试中获取$ httpBackend

时间:2013-04-30 12:57:47

标签: javascript unit-testing angularjs qunit

我正在为 Angular 控制器编写 QUnit 测试。在模块的设置功能中,我编写了以下语句来获取 $ httpBackend 的对象:

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

在测试中,GET的模拟响应配置如下:

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

此语句的测试规范失败,错误:对象不支持属性或方法expectGET

我能够使用相同的注入器参考来获取其他对象,例如控制器和示波器。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:4)

我向Scott Allen询问了这个问题,他回答了我JSFiddle解决了这个问题。他说当我们在QUnit测试中使用$ httpBackend或angular-mocks.js中定义的任何其他模拟时,以下装饰器是必不可少的:

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

我在示例应用程序中使用了这种方法,并在博客中写了我的学习内容:http://sravi-kiran.blogspot.com/2013/06/UnitTestingAngularJsControllerUsingQUnitAndSinon.html

答案 1 :(得分:1)

您必须设置角度才能使用angular-mocks.js中的 $ httpBackend 其中包含expectGET方法。

但根据the docs,它是“只适用于茉莉花。