gpt4 book ai didi

jasmine - AngularJS 测试错误 : Unknown provider: $_httpBackend_Provider <- $_httpBackend_

转载 作者:行者123 更新时间:2023-12-04 16:17:04 26 4
gpt4 key购买 nike

我正在尝试使用 Jasmine 单元测试规范文件测试 AngularJS Controller 。我的方法是在以下测试中使用 $httpBacked:

describe('SubmissionsController', function() {
var minimal_mock_response = [ { id: 1 } ];
var scope, routeParams, $httpBackend;

beforeEach(module('submissionServices'));

beforeEach(inject(function($_httpBackend_, $rootScope) {
scope = $rootScope.$new();
$httpBackend = $_httpBackend_;
$httpBackend.expectGET('/submissions').respond(minimal_mock_response);
routeParams = {};
}));

it('passes a trivial test', function() {
expect(true).toBe(true);
});
});

我插入了 expect(true).toBe(true) 只是为了让测试执行并失败,即使它没有触及 Angular Controller 。当我尝试使用 jasmine-headless-webkit 运行测试时,收到以下错误:
jasmine-headless-webkit spec/javascripts/SubmissionsControllerSpec.js

Running Jasmine specs...
F
FAIL: 1 test, 1 failure, 0.011 secs.

Submissions controllers SubmissionsController passes a trivial test. (XXX/spec/javascripts/SubmissionsControllerSpec.js:18)
Error: Unknown provider: $_httpBackend_Provider <- $_httpBackend_

Test ordering seed: --seed 9254

是否有关于如何纠正此错误并使琐碎测试执行的任何提示?

最佳答案

用下划线将服务名称括起来有一些好处。

从您的代码中,我可以看到您可能想要保存对 $httpBackend 的引用。这就是你想要做的。下划线的放置是一次性的。

beforeEach(inject(function(_$httpBackend_, $rootScope) {
scope = $rootScope.$new();
$httpBackend = _$httpBackend_;
...

Angular 足够聪明,可以删除下划线并将 $httpBackend 返回给您,您可以将其保存到您自己的 $httpBackend。

关于jasmine - AngularJS 测试错误 : Unknown provider: $_httpBackend_Provider <- $_httpBackend_,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com