gpt4 book ai didi

angular-mocks - 只模拟显式请求。传递所有意外请求

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

我发现 angular-mocks 默认阻止所有请求,并强制我“传递”我想要的东西,这令人非常沮丧。

有时我只是想用模拟测试 1 个 url,并且我必须为每个“意外请求”错误跳过严重的圈套。

不懂正则,不喜欢正则,不想用正则!

看看这个可怕的代码,我需要一个简单的模拟

 $httpBackend.whenGET(/\/atlas\/account\/[0-9]+$/)
.respond(atlasAccounts[0]);

$httpBackend.whenGET(/\/scripts$/).passThrough();
$httpBackend.whenGET(/^\w+.*/).passThrough();
$httpBackend.whenPOST(/^\w+.*/).passThrough();

为什么这不能减少到一行???
 $httpBackend.whenGET(/\/atlas\/account\/[0-9]+$/)
.respond(atlasAccounts[0]);

或者更好的是,它为什么不支持该死的通配符?他们是否试图让开发人员的生活更艰难?
  $httpBackend.whenGET("/atlas/account*") 
.respond(atlasAccounts[0]);

这就是我所需要的,如果它是如此直观......

有什么方法可以在 ngMock 中禁用这个全有或全无的约定,并且只拦截我明确模拟的网址?

最佳答案

首先添加所有捕获,然后最后为所有人添加直通。我在我的应用程序中做这样的事情并且工作得很好:

function run($httpBackend) {
var phones = [{ name: 'phone1' }, { name: 'phone2' }];

// Capture specific request
$httpBackend.whenGET('/phones').respond(function () {
return phones;
});

// Passthrough everything
$httpBackend.whenGET(/[\s\S]*/).passThrough();
}

这将捕获'/phones'。如果它不捕获,它将通过。

关于angular-mocks - 只模拟显式请求。传递所有意外请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794540/

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