javascript-在Jasmine测试中未定义AngularJS $scope.$watch回调函数参数

我在名为ctrl.test的范围变量中的控制器中定义了$scope.$watch. $watch的回调函数在生产部署中使用正确的值(newVal)进行调用,但是当从Jasmine测试中调用时,将使用undefined进行调用.
直接访问ctrl.test确实会产生正确的值.

有人能对此有所启发吗?这是一个Plunk用来摆弄.

解决方法:

当使用Controller As模式时,请使用函数作为watch表达式.

更换:

$scope.$watch('ctrl.test', ...

带有:

$scope.$watch(function () {
  return ctrl.test;
}, ...

新潮:http://plnkr.co/edit/4tb4nhjtdRtv8cLURWZg?p=preview

有关为什么这样的详细信息:https://*.com/a/25748208/2943490

上一篇:javascript-测试使用$routeParams作为URL参数的AngularJS服务


下一篇:角度单元测试:如何在没有范围的情况下测试控制器属性