4

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

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

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

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

测试规范在此语句中失败并出现错误:对象不支持属性或方法expectGET

我能够使用相同的注入器引用获得其他对象,如控制器、作用域。

我在这里错过了什么吗?

4

2 回答 2

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

于 2013-06-24T06:22:07.967 回答
1

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

但根据文档,它是“仅适用于茉莉花。

于 2013-06-03T20:49:45.103 回答