我的项目中有以下代码返回。 employeeService.getJson()函数返回promise对象。承诺的成功方法不在承保范围内。
x
以下代码是针对测试用例编写的。
//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);
});
答案 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();
});
我希望这可以解决你的问题。
此致