Как я могу проверить изменение $scope.watch(AngularJS) в Жасмине?
Недавно я начал писать что-то с AngularJS, и я не уверен, как начать писать тест для этой конкретной вещи. Я создаю режим запроса справки, который имеет разные состояния. Поэтому в моем контроллере я использую переменную $scope.request_mode. Различные ссылки для активации запросов справки устанавливают эту переменную на что-то по-другому.
Внутри моей директивы я делаю $scope.$watch('request_mode', function(){...});
, чтобы избирательно активировать или деактивировать вещи по мере изменения режима запроса. Код работает отлично, но проблема, с которой я столкнулась, - это тестирование. Кажется, я не могу заставить Жасмин забрать $scope.$watch
и вообще сжечь что-нибудь, когда оно изменится.
Я уверен, что кто-то сталкивался с этим раньше, поэтому любые предложения были бы очень оценены.
Ответы
Ответ 1
В ваших модульных тестах вам нужно вручную вызвать $scope.$digest()
или $scope.$apply()
для запуска $scope.$watch()
.
Обычно в вашем коде вам не нужно этого делать, поскольку директивы типа ng-click
делают $rootScope.$apply
для вас за кулисами.