Karma报道中未涵盖承诺的成功功能

时间:2015-08-11 12:07:30

标签: angularjs jasmine karma-jasmine

我的项目中有以下代码返回。 employeeService.getJson()函数返回promise对象。承诺的成功方法不在承保范围内。

x

请在下面找到代码覆盖率的屏幕截图。 enter image description here

以下代码是针对测试用例编写的。

//controller code which access service method.
 export  class EmployeeCtrlClass {
   constructor(){
     employeeService.getJson()    //get promise
        .success(function (xyz) {
            employeeService.testdata = xyz.Employee;
            _this.employeeData = employeeService.testdata;
      });
   }
}
// function in Service code

 public getJson() {
        return this.$http.get('../json/TestDataJson.json'); //return promise
    }

我如何在代码覆盖范围内涵盖此代码?感谢。

编辑: - 我已将测试用例更改为以下版本,并且正在运行。

 it('controller constructor',() => {
     //simply i am calling constructor of controller class.
     var ctrlObj = new EmployeeCtrlClass($scope, empService);
 });

1 个答案:

答案 0 :(得分:6)

你必须使用$ httpBackend.flush();进入承诺功能。如果你在describe区域中注入了$ httpBackend,那么就应该这样:

var myHttpBackend;
beforeEach(inject(function($httpBackend) {
   myHttpBackend = $httpBackend;
});
 it('controller constructor',function(){
     //simply i am calling constructor of controller class.
     var ctrlObj = new EmployeeCtrlClass($scope, empService);
     myHttpBackend.flush();
 });

我希望这可以解决你的问题。

此致