路径匹配时,不执行通过响应注册的回调

时间:2019-01-17 17:07:51

标签: angularjs testing httpbackend

我正在尝试测试通过引用使用HTML模板的AngularJS指令。因此,它发出一个http请求。

我正在尝试使用httpBackend.whenGET(“ ....”)。respond(function)捕获对模板的所有请求,以从本地存储加载该模板。

关键是永远不会调用该函数。我知道它与路径匹配,因为它没有显示错误消息,表明未预期到该呼叫。

顺便说一句,我更喜欢用这种方式而不是使用html2js。

举个例子。 如果我设置了后端。当错误(路径不匹配)时,我会得到错误

错误:意外请求:GET resources / js / app / views / search / parts / con-search-filter / template.html 预计不会有更多请求

如果我在代码中执行(并且我知道何时调用GET):

httpBackend.whenGET(/(.*)template.html/, undefined, undefined, 
["basePath"]).respond(function(method, url, data, headers, params){
     debugger;
     console.log("hello");
     return [200, []];
});

然后,先前的错误消失了。关键是没有命中断点(debugger;),也没有打印“ hello”。

我正在导入angular-mocks v1.5.11,并且根据文档,在第1255行中,我应该能够做到

$httpBackend.whenPATCH(/\/user\/(.+)\/article\/(.+)/, undefined, undefined, ['user', 'article'])
.respond(function(method, url, data, headers, params) {
// for url of '/user/1234/article/567' params is {user: '1234', article: '567'}
});

我正在使用chrome驱动程序使用jasmine-maven-plugin 2.2版本。我正在执行bdd目标。

1 个答案:

答案 0 :(得分:0)

我知道是什么了。只是,请求处于待处理状态,因此我不得不执行httpBackend.flush()。