2016-11-25 53 views
1

我有了一种方法如何在我的子控制器中嘲笑这个方法来测试它?

$scope.handleChange = function (index) { 
    //Logic 
    $scope.$parent.doSomething(); 
}; 

我似乎无法找到方法来测试handleChange()方法或茉莉花控制器对象这个角度控制器,因为这两个测试抛出这个错误: TypeError: $scope.$parent.doSomething is not a function

我这样做了:

beforeEach(inject(function ($controller, $injector, $q, $rootScope) { 
var qReference = $q; 
var rootScopeReference = $rootScope; 
var $scope = rootScopeReference.$new(); 

var controllerReference = $controller('MyController', { 
     $scope: $scope 
    }); 
})); 

it('Test Case-1: Mycontroller is defined', function() { 
    expect(controllerReference).toBeDefined(); 
}); 

我在做什么错,我该如何解决这个问题?

回答

0

您可以在一个变量的范围只是存储在您的测试类,使用间谍嘲笑的方法DoSomething的:

var myScope = $rootScope.$new(); 

spyOn(myScope.$parent, 'doSomething'); 

然后把它传递给你的控制器:

var controllerReference = $controller('MyController', { 
    $scope: myScope 
}); 

并在您断言块你做这样的事情:

expect(myScope.$parent.doSomething).toHaveBeenCalled(); 

希望有所帮助。

相关问题