2016-08-10 2 views
0

я в настоящее время имеющий следующую проблему:Karma - браузер для повторной инициализации описания блока

В модульном тесте карму, у меня есть два описания блоков. В обоих из них, я определяю элемент, скомпилировать его и добавить его к телу, так же, как следующее:

element = angular.element('<div>some content</div>'); 

element = $compile(element)(scope); 

angular.element("body").append(element); 

Проблема заключается в том, что второй блок описания конфликтов с первым, так как окно браузера остается открытым все время.

Бетон, во втором описывающем блоке, я проверяю HTML-элемент toBeNull(), который должен быть нулевым, но на самом деле он уже определен из первого блока описания (потому что это тот же самый экземпляр пользователя).

Итак, теперь мой вопрос: есть ли способ открыть или повторно инициализировать окно браузера для второго блока описания, чтобы получить полный новый документ?

ответ

0

Установите ваш блок describe так, чтобы при любом блоке, установленном в DOM, был снесен в конце теста. Бегуны, которые используют блоки describe, обычно имеют крючок after или afterAll, который вы можете поместить в свой блок, чтобы выполнить отрыв после того, как все тесты в блоке выполнены.

Что-то вроде:

afterAll(function() { 
    angular.element(element).remove(); 
}); 

Затем следующий блок может начать с чистого листа.

+0

Можете ли вы уточнить, как это работает, чтобы полностью очистить DOM? Как я могу использовать afterAll для очистки? – user5638730

+0

Я добавил фрагмент кода. Это в конечном счете использует метод 'remove()' jQuery, который гарантирует, что прослушиватели событий, добавленные с jQuery и все вещи '.data', будут очищены при удалении. – Louis

+0

На самом деле, это не работает ... У меня есть предположение, почему: С помощью строки удаляется только элемент, но он все еще находится в DOM, не так ли? (потому что я добавил его в тело beofre). – user5638730

Смежные вопросы