如何在我的子控制器中嘲笑这个方法来测试它?
问题描述:
我有了一种方法如何在我的子控制器中嘲笑这个方法来测试它?
$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();
});
我在做什么错,我该如何解决这个问题?
答
您可以在一个变量的范围只是存储在您的测试类,使用间谍嘲笑的方法DoSomething的:
var myScope = $rootScope.$new();
spyOn(myScope.$parent, 'doSomething');
然后把它传递给你的控制器:
var controllerReference = $controller('MyController', {
$scope: myScope
});
并在您断言块你做这样的事情:
expect(myScope.$parent.doSomething).toHaveBeenCalled();
希望有所帮助。