我发现角度模拟会阻止所有请求“违约”,并迫使我“穿过”我想要的东西,这令人非常沮丧。
有时候我只是想用模拟测试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中禁用这个全有或全无的约定,并且只是拦截我明显嘲笑的网址?
答案 0 :(得分:10)
首先添加所有捕获,然后最后为所有人添加一个直通。我在我的应用程序中做了类似的事情并且工作得很好:
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'。如果它没有捕获,它将通过。