AngularJS + Jasmine:$ httpBackend不能按预期工作

AngularJS + Jasmine:$ httpBackend不能按预期工作,第1张

AngularJS + Jasmine:$ httpBackend不能按预期工作

让我们分别讨论每个错误

错误:没有等待刷新的请求!

发生这种情况是因为没有通过请求

$httpBackend
,所以没有要刷新的东西。那是因为您在实例化
UserService
之前
$httpBackend
,所以Angular不知道它应该使用它而不是real
$http
。如果您检出控制台,您会看到正在发送真实请求。

错误:请求不满意:GET
https://api.github.com/users/wilk

与上述相同的原因。由于

$httpBackend
服务未使用该服务,因此您创建的期望将永远无法实现。

考虑以上所有因素后,重构的规格如下:

describe ('Service: UserService', function () {    var UserService,        GITHUB_API_URL,        GITHUB_USER,        $httpBackend;    beforeEach(function() {      module('plunker');      inject(function( _$httpBackend_, _UserService_, _GITHUB_API_URL_, _GITHUB_USER_) {        $httpBackend = _$httpBackend_;        UserService = _UserService_;        GITHUB_API_URL = _GITHUB_API_URL_;        GITHUB_USER = _GITHUB_USER_;      });    });    afterEach (function () {        $httpBackend.verifyNoOutstandingExpectation ();        $httpBackend.verifyNoOutstandingRequest ();    });    describe ('when populate method is called', function () {        it ('should returns user data', function () { $httpBackend   .whenGET(GITHUB_API_URL + '/users/' + GITHUB_USER)   .respond ({       login: GITHUB_USER,       id: 618009   }); UserService.populate(GITHUB_USER); $httpBackend.flush(); expect(UserService.data().login).toBe(GITHUB_USER); expect(UserService.data().id).toBe(618009);        });    });});

柱塞

注意:我已经更改了一些注入方式,但是只要您先创建

$httpBackend
其他内容,您的 *** 作就可以了。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5639139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存