[英]AngularJS $scope.$watch callback function parameter undefined in Jasmine test
我在一個名為ctrl.test
的范圍變量的控制器中定義了一個$scope.$watch
。 $ watch的回調函數在生產部署中使用正確的值(newVal)調用,但是從Jasmine測試調用時,將使用undefined
調用它。 直接訪問ctrl.test
會產生正確的值。
有人可以對此有所了解嗎? 這是一個隨意擺弄的人。
使用Controller As模式時,使用函數作為監視表達式。
更換:
$scope.$watch('ctrl.test', ...
附:
$scope.$watch(function () {
return ctrl.test;
}, ...
新的插件: http ://plnkr.co/edit/4tb4nhjtdRtv8cLURWZg? p = preview
有關這種情況的更多信息: https : //stackoverflow.com/a/25748208/2943490
在我的情況下,最好的解決方案是保持手表通常
$scope.$watch( 'myController.varToWatch', function(newVal,oldValue) {
//blabla
});
並將控制器范圍附加到屬性: $ scope.myController = myController;
beforeEach(inject(function(_$controller_, _$httpBackend_,_$rootScope_){
$httpBackend = _$httpBackend_;
$scope = _$rootScope_.$new();
$controller = _$controller_;
myController = $controller('settingsController', { $scope: $scope });
$scope.myController = myController;
}));
靈感來自這里: http : //juristr.com/blog/2014/11/learning-ng-testing-watch-expressions/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.