【发布时间】:2015-12-31 17:26:42
【问题描述】:
我用 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 上的其他主题,但它们对我没有帮助。 我该如何解决这个问题?
【问题讨论】:
-
$scope.$apply();如果getAllProducts()使用的是$q/$http/$resource,则不需要
标签: angularjs unit-testing jasmine