Angularjs 如何在单元测试中更改$watch值?
我有一个如下的指令:Angularjs 如何在单元测试中更改$watch值?,angularjs,unit-testing,Angularjs,Unit Testing,我有一个如下的指令: angular.module('myApp', []) .directive('myDirective', function(){ return { link: function(scope, element, attr, controller) { scope.$watch('data', function(newValue, oldValue) { $timeout(function() {
angular.module('myApp', [])
.directive('myDirective', function(){
return {
link: function(scope, element, attr, controller) {
scope.$watch('data', function(newValue, oldValue) {
$timeout(function() {
if (newValue !== oldValue) {
console.log('data Changed!');
}
});
},true);
scope.$watch('myCtrl.search', function(newValue, oldValue) {
$timeout(function() {
if (newValue !== oldValue) {
console.log('myCtrl.search Changed!');
}
});
},true);
}
};
});
我可以在单元测试中更改数据
值并触发$watch
,如下所示:
scope.data = "new data";
scope.$digest();
但是如何更改
myCtrl.search
值呢?我尝试了scope.myCtrl.search=“new search”
,它返回错误无法设置未定义的属性“search”myCtrl
由于执行ng controller=MyController as myCtrl
指令而附加到范围。因为这是一个单元测试,所以您也需要模拟myCtrl
在您执行以下操作的测试设置中
scope=$rootScope.$new()
还加
scope.myCtrl={}代码>
设置虚拟变量(控制器)的步骤