AngularJS + jasmine+karma:在控制器中模拟服务响应

AngularJS + jasmine+karma: service response mocking in controller

本文关键字:模拟 服务 响应 控制器 jasmine+karma AngularJS      更新时间:2023-09-26

我正在努力测试有调用服务的角控制器方法,例如:

function methodInController() {
service.callToService()
.success(function(){})
.error(function(){});
}

如何模拟service.callToService()?因为现在因果报应读取控制器并抛出TypeError: 'undefined'不是对象<…> near .error(function(){})

使用$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();

等。重复并调整您的失败案例和您想要测试的任何其他内容。