我将如何testingJasmine中的$ scope.watch(AngularJS)更改?

我刚刚开始写AngularJS的东西,我不知道如何去写这个特定的东西testing。 我正在构build具有不同状态的“帮助请求”模式。 所以在我的控制器中,我使用$ scope.request_modevariables。 激活帮助请求的不同链接将该variables设置为不同的内容。

然后在我的指令里面,我做了$scope.$watch('request_mode', function(){...}); 以在请求模式改变时select性地激活或停用事物。 代码都很好,但是我遇到的问题是testing。 我似乎无法让Jasmine拿起$scope.$watch ,实际上当它发生变化时会触发任何东西。

我敢肯定有人遇到过这个,所以任何build议将非常感激。

在你的unit testing中,你需要手动调用$scope.$digest()$scope.$apply()来触发$scope.$watch()

通常在你的代码中你不需要这样做,因为像ng-click这样的指令可以在后台为你$rootScope.$apply