gpt4 book ai didi

angularjs - 如何使 $httpBackend 对 URL 查询参数的顺序不敏感?

转载 作者:行者123 更新时间:2023-12-03 14:54:14 25 4
gpt4 key购买 nike

我正在使用 Angular.js $httpBackend测试一些包装 $http 的服务调用(这是在 ngMock 中,而不是 ngMockE2E)。

似乎像expect这样的东西和 when对 URL 查询参数的顺序很敏感。例如。如果我这样做 $httpBackend.when('POST','/apiCall?X=1&Y=2').respond(/* ... */)$httpBackend.expectPOST('/apiCall?X=1&Y=2') , 如果我有 ,我会发现 URL 不匹配Y=2&X=1 在 URL 中而不是 X=1&Y=2 .

我想以这样一种方式编写我的测试,即被测试的服务可以自由更改 URL 查询字符串参数的顺序,而不会破坏测试。我无法在 $httpBackend 文档中找到任何解决此问题的方法。这样做的正确方法是什么?

最佳答案

angular 将对 params 的键进行排序与 $http 结合使用的对象。

$http({
url:"/myurl",
method:"GET",
params:{
Y:1
X:2
}});
Angular 将有效地执行以下操作: Object.keys(myParams).sort()并按该顺序附加键。
最终是 '/myurl?X=2&Y=1'我建议始终不直接在 url 中使用查询参数,而是在参数中使用 params:然后该 Angular 将被处理。
另一种解决方案是在测试中使用正则表达式,例如 $httpBackend.expectPOST(/\/myurl\?((X|Y)=\d{1,}&?){2}/) regexper
自从文档重新设计以来,您可以使用 RegExp 的事实真的很难被发现,因为颜色不会混合。

关于angularjs - 如何使 $httpBackend 对 URL 查询参数的顺序不敏感?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363079/

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