gpt4 book ai didi

javascript - expectHEAD 已记录但未实现?

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:30 26 4
gpt4 key购买 nike

在我们内部的 angularjs 项目中,其中一项服务有 $http.head()我正在尝试测试的调用。

为了测试,我使用了 Fake HTTP backendangular-mocks 提供。相关代码如下:

it('handle status code 200', inject(function ($httpBackend, ConnectionService) {
spyOn(Math, 'random').andReturn(0.1234);

httpBackend = $httpBackend;
httpBackend.expectHEAD('ping?rand=1234').respond(200);
ConnectionService.sendRequest();
httpBackend.flush();

expect(ConnectionService.stats.packetsReceived).toEqual(5);

httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
}));

运行测试结果出现如下错误:

PhantomJS 1.9.7 (Mac OS X) connection service tests sendRequest function handle status code 200 
FAILED TypeError: 'undefined' is not a function (evaluating 'httpBackend.expectHEAD('ping?rand=1234')')
at /path/to/app/app-connection-service_test.js:66
at d (/path/to/app/bower_components/angular/angular.min.js:35)
at workFn (/path/to/app/bower_components/angular-mocks/angular-mocks.js:2159)

深入挖掘后,我发现了相关的 github 问题:

据我所知,这意味着在 angular-mocks 中确实没有 expectHEAD() 方法——它被记录在案,但实际上,它还不是稳定的 Angular 释放。

最好的方法是什么?

请注意,我必须使用 angular <= 1.2,因为此应用需要在 IE8 上运行(Angular 1.3 是 dropping support for IE8 )。


我目前正在考虑的解决方法之一是将 head() 替换为 get()。在这种情况下,我可以使用现有的 expectGET() 方法对其进行测试。但我不确定缺点。

最佳答案

您可以自己添加更改:https://github.com/revolunet/angular.js/commit/b2955dd52725241dd9519baa12fe8ca74659004b

这是第 1523 行 angular-mocks.js 中的一行更改:

1523: -    angular.forEach(['GET', 'DELETE', 'JSONP'], function(method) {
1523: + angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD'], function(method) {

鉴于无论如何您都必须使用非当前版本的 Angular,它在未来应该不会造成太多问题。

编辑:回顾 JoelJeske 的回答,他提出了一个很好的观点——您可以轻松地做到这一点而无需 fork 。我要对他的解决方案做出的一个改变是不再直接调用该方法

$httpBackend.expect('HEAD', 'ping?rand=1234').respond(200);

我会直接创建快捷方式:

$httpBackend.expectHEAD = function(url, headers) {
return $httpBackend.expect('HEAD', url, undefined, headers);
};

然后你可以做:

$httpBackend.expectHEAD('ping?rand=1234').respond(200);

关于javascript - expectHEAD 已记录但未实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939645/

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