我已经在我的 Controller 中为一个名为 ctrl.test
的范围变量定义了一个 $scope.$watch
。 $watch 的回调函数在生产部署中使用正确的值 (newVal) 调用,但是当从 Jasmine 测试中调用时,它使用 undefined
调用。
直接访问 ctrl.test
会产生正确的值。
任何人都可以阐明这一点吗?这是一个 Plunk摆弄。
最佳答案
当使用 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
关于javascript - Jasmine 测试中未定义的 AngularJS $scope.$watch 回调函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124298/