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

标签 javascript angularjs jasmine

我已经在我的 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/

相关文章:

Javascript - 纯js中的图表,移动点

javascript - 如何使用 Ratchet 通过单个 websocket 发送请求发送一组对象?

javascript - 是否可以在现有的javascript函数中添加一些代码而不修改原始代码?

javascript - 如果在 ng-repeat 上为真,AngularJS 会尝试将一个类添加到多个值

javascript - javascript上下文中TDD和BDD的区别

javascript - 为 for 循环添加超时

angularjs - 没有 URL 的单页应用程序

css - 应用 Angular 过滤器会导致布局损坏

javascript - Angular 服务的 Jasmine 测试无法解决延迟调用

unit-testing - 无法在 Angular 2 单元测试(Jasmine)中模拟按键事件