我正在努力测试角度控制器方法,它在其中调用服务,例如:
function methodInController() {
service.callToService()
.success(function(){})
.error(function(){});
}
我应该如何模拟service.callToService()?因为现在karma读取控制器和抛出错误,TypeError:' undefined'不是对象< ...>靠近.error(function(){})。
答案 0 :(得分:0)
使用$q
创建承诺并返回。
var deferred = $q.defer();
spyOn(service, 'callToService').and.returnValue(deferred.promise);
deferred.resolve({fake: 'data'});
$scope.$digest();
expect(service.callToService).toHaveBeenCalledWith({some: 'arguments'});
expect(controller.myCuccessHandler).toHaveBeenCalled();
expect(controller.myErrorHandler).not.toHaveBeenCalled();
等。 重复并调整您的失败案例以及您想要测试的任何其他内容。