簡體   English   中英

AngularJS $ scope。$ watch回調函數參數在Jasmine測試中未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM