我使用IBM Mobilefirst平台(ionic,AngularJS)开发了一个应用程序,现在我想用Jasmine框架测试这个应用程序。
以下代码是我想要测试的控制器的一部分:
$scope.method= function(...) {
ServiceSvc.insertProduct().then(function() {
$scope.finishsavingAdding = true;
$scope.finishsavingDeleting = false;
ServiceSvc.getAllProducts().then(function(data) {
$scope.product= data.invocationResult.resultSet;
$scope.$broadcast('scroll.refreshComplete');
$scope.$apply(); }) })}
我尝试使用以下代码进行单元测试,它会抛出这个错误:
错误:[$ rootScope:inprog] $ digest已在进行中
it("should call method", function(){
$scope.method();
expect(ServiceSvcMock.insertProduct).toHaveBeenCalled();
var data = {invocationResult: {resultSet:"test"}};
deferred.resolve(data);
$scope.$apply();
expect($scope.finishsavingDeleting).toBe(false);
expect(ServiceSvcMock.getAllProducts).toHaveBeenCalled();
});
我已经阅读了Stack Overflow上的其他主题,但他们没有帮助我。 我该如何解决这个问题?
答案 0 :(得分:1)
使用$scope.$apply();
时会引发错误。这是因为,您的代码(包含$scope.$apply()
)已经处于有角度的摘要周期中。
删除$scope.$apply()
,它应该可以正常工作。