我正在为 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

10-08 00:34