我正在为 Angular 控制器编写 QUnit 测试。在模块的设置功能中,我编写了以下语句来获取 $ httpBackend 的对象:
var injector = angular.injector(['ng']);
var httpBackend = injector.get('$httpBackend');
在测试中,GET的模拟响应配置如下:
httpBackend.expectGET(url).respond([]);
此语句的测试规范失败,错误:对象不支持属性或方法expectGET
我能够使用相同的注入器参考来获取其他对象,例如控制器和示波器。
我在这里错过了什么吗?
答案 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,它是“只适用于茉莉花。”