我熟悉使用$controller构造函数来模拟$scope和控制器的概念。
var scope = rootScope.$new();
it('should contain a testVar value at "test var home"', function(){
homeCtrl = $controller('homeCtrl', {
$scope: homeScope,
$rootScope: rootScope
})
expect(homeScope.testVar).toBe('test var home');
})
有没有一种类似的方法来模拟指令(directive)?无论是指令还是它的控制器都可以。
//mock coding
var scope = rootScope.$new();
it('should contain a testVar value at "test var home"', function(){
homeDir = $directive('homeCtrl', {
$scope: homeScope,
$elem: angular.element('<div....</div>'),
$att: {}
$modelViewController: angular.element().controller('ngModel')
})
homeCtrl = homeDir.$getController();
expect(homeScope.testVar).toBe('test var home');
})
问题旨在针对指令,如何测试它们?如何提取它们的组件?据我所知,如果我在指令上有一个函数,我需要将其附加到作用域上,否则,如果它属于指令,则该函数是无法测试的。因此,如果我想在测试期间使用作用域,如何将作用域注入变量中?