38

我最近刚开始用 AngularJS 编写一些东西,但我不确定如何为这个特定的东西编写测试。我正在构建一个具有不同状态的“帮助请求”模式。所以在我的控制器中,我使用了一个 $scope.request_mode 变量。激活帮助请求的不同链接将该变量设置为不同的值。

然后在我的指令中,我正在做一个$scope.$watch('request_mode', function(){...});随着请求模式的变化有选择地激活或停用事物。代码都很好用,但我遇到的问题是测试。我似乎无法让 Jasmine 拿起$scope.$watch并在它发生变化时实际发射任何东西。

我敢肯定有人以前遇到过这个问题,所以任何建议都会非常感激。

4

1 回答 1

97

在您的单元测试中,您需要手动调用$scope.$digest()$scope.$apply()触发$scope.$watch().

通常在你的代码中你不必这样做,因为指令就像在幕后为你ng-click做的一样。$rootScope.$apply

于 2013-06-16T01:06:15.107 回答