指令测试没有正确执行$ http.get

时间:2015-04-17 13:59:24

标签: angularjs unit-testing jasmine

我正在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()调用之后立即恢复。有什么理由发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

链接到 AngularJS 文档:service/$httpBackend - 请阅读此内容。了解如何模拟 $ http服务将有所帮助。例子非常好。

从SO那里回答一些与您有关的问题: AngularJS - Unit test for http get to JSON file

解决承诺的最重要方法$http.get() $httpBackend.flush();