我正在jasmine中编写一个测试,用于通过ajax和$http
调用动态加载模板的指令。指令中的这部分看起来像这样:
scope.load = function(templatePath) {
$http.get(templatePath).then(function then(response) {
// do processing here
}).catch(function catchError() {
// catch error
});
}
并致电
scope.load('/path/to/template');
现在,这个指令在浏览器中使用时效果很好。但是,当jasmine执行此指令并且调用load
函数时,都不会调用成功块和catch块,并且程序会在load()调用之后立即恢复。有什么理由发生这种情况吗?
答案 0 :(得分:1)
链接到 AngularJS 文档:service/$httpBackend - 请阅读此内容。了解如何模拟 $ http服务将有所帮助。例子非常好。
从SO那里回答一些与您有关的问题: AngularJS - Unit test for http get to JSON file
解决承诺的最重要方法$http.get()
:
$httpBackend.flush();