$ Rootscope.digest бросает «Нет больше запросов ожидается» в угловой директиве.
-
20-12-2019 - |
Вопрос
Я закодировал директиву, которая проверяет некоторые разрешения и удаляет элемент от DOM, если разрешения являются KO.
Я бы с удовольствием удалите ее, но ... подол, я стучу голову, снова снова стены, чтобы сделать эту простую тестовую работу.
Я использую $ rootscope.digest (), чтобы скомпилировать часть HTML.При вызове этой функции угловые пытаются загрузить мою главную страницу приложения, и я получаю страшную ошибку «Нет больше ожидаемой».
Так вот тест:
describe('Unit testing permission-needed', function() {
var $compile;
var $rootScope;
var $httpBackend;
// Load the myApp module, which contains the directive
beforeEach(module('app'));
beforeEach(angular.mock.module('ngMockE2E'));
beforeEach(inject(function(_$compile_, _$rootScope_, $injector) {
$compile = _$compile_;
$rootScope = _$rootScope_;
$httpBackend = $injector.get('$httpBackend'); // not sur if I can inject it like others services ?
$httpBackend.whenGET('app/login/login.tpl.html').passThrough(); // this doesn't seem to work
}));
it('should replace the element with the appropriate content', function() {
// Compile a piece of HTML containing the directive
var element = $compile("<div permission-needed><span>Some content goes here</span></div>")($rootScope);
$rootScope.$digest(); // BAM => "no more request expected"
// Do the test here
// expect(....);
});
});
.
Обратите внимание, что если я буду использовать . Соответствует («какой-то HTML здесь»); вместо .passthrough () работает.
Спасибо.
Решение
Ну, отвечая на себя:
Использование $ new () rootscope, тест проходит:
$rootScope = _$rootScope_.$new();
.
Надеюсь, это поможет кому-то.
Не связан с StackOverflow