当角色服务变得不确定时间间谍它

我有一个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

回到顶部