当角色服务变得不确定时间间谍它
我有一个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 ,来自$scope.isUndoDisabled
的呼叫HistoryService.isUndoDisabled()
返回未定义,然后测试失败,因为:
预期的间谍撤消操作不被调用。
关于发生了什么的任何想法????好像spyOn
影响到代码?
回答:
spyOn(...)
回报是捷径为spyOn(...).and.stub()
,而不是spyOn(...).and.callThrough()
。当以这种方式窥探时,HistoryService.isUndoDisabled()
返回undefined
。
测试设备的正确方法是将其与其他设备隔离。因为它是被测试的控制器,所述服务应当被嘲笑或存根:
spyOn(HistoryService, 'isUndoDisabled').and.returnValue(true);
然后在另一个试验:
spyOn(HistoryService, 'isUndoDisabled').and.returnValue(false);
回答:
我觉得如果你想打电话从HistoryService isUndoDisabled()函数$ scope.isUndoDisabled应该
$scope.isUndoDisabled = function() { HistoryService.isUndoDisabled();
};
不应该有在体内
以上是 当角色服务变得不确定时间间谍它 的全部内容, 来源链接: utcz.com/qa/262386.html