我有一个 Angular 1.6.6 应用程序,我正在使用 Karma 和 Jasmine 进行测试。
给定来自控制器的这段代码:
$scope.undo = function () {
return $scope.isUndoDisabled() || $scope.undoAction();
};
$scope.isUndoDisabled = function () {
return HistoryService.isUndoDisabled();
};
我一直在使用以下规格对其进行测试:
it('undoAction should not be called with default settings', function () {
var $scope = {};
var controller = $controller('PaintController', { $scope: $scope });
spyOn($scope, 'undoAction');
//spyOn(HistoryService, 'isUndoDisabled');
$scope.undo();
expect($scope.undoAction).not.toHaveBeenCalled();
});
并且正在通过测试,但是当我取消注释 HistoryService 的 spyOn 时,HistoryService.isUndoDisabled()
来自的调用$scope.isUndoDisabled
返回未定义,然后测试失败,因为:
预期的 spy undoAction 未被调用。
知道发生了什么吗????好像spyOn
对代码有影响??