我正在为 Angular Controller 编写 QUnit 测试。在模块的设置功能中,我编写了以下语句来获取 $ httpBackend 的对象:
var injector = angular.injector(['ng']);
var httpBackend = injector.get('$httpBackend');
在测试中,对GET的模拟响应配置如下:
httpBackend.expectGET(url).respond([]);
测试规范在此语句中失败,并出现以下错误:对象不支持属性或方法
expectGET
我能够使用相同的注入(inject)器引用获取其他对象,例如 Controller ,注入(inject)器。
我在这里想念什么吗?
最佳答案
我问了Scott Allen这个问题,他回答了JSFiddle来解决这个问题。他说,当我们在QUnit测试中使用$ httpBackend或angular-mocks.js中定义的任何其他模拟程序时,以下修饰符是必不可少的:
$provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
我在一个示例应用程序中使用了这种方法,并在我的学习博客中写道:http://sravi-kiran.blogspot.com/2013/06/UnitTestingAngularJsControllerUsingQUnitAndSinon.html