2017-01-23 14 views
3

У меня есть тест, который проверяет, был ли элемент детали DOM удален ngIf. Когда я проверяю DOM, используя: fixture.debugElement.query(By.css(".button-area")), result либо null, либо элемент DOM.Тест зависает, когда ожидает (результат) .toBe (null). (Угловой 2, Жасмин)

Если result - null, то следующий тест работает нормально. Но, если в тесте result содержится элемент, он не просто терпит неудачу, он замерзает браузер.

Тест выглядит следующим образом:

var result = fixture.debugElement.query(By.css(".button-area")) 
expect(result).toBe(null) 

Я также попытался expect(result).toEqual(null) и .toBeFalsy(), которые имеют один и тот же результат.

Каков правильный способ проверки правильности удаления элемента DOM?

UPDATE 1/23/2017

я выяснил этот вопрос является для, специфического элемента, возвращенный:

fixture.debugElement.query(By.css(".button-area"))

Это может быть ошибкой с угловыми 2 или жасмин. Если я использую document.getElementByClassName("button-area"), это не проблема, и тест работает нормально.

ответ

1

Так как это, кажется, ошибка с жасмином или Угловое, здесь быстрый обходной путь, если вы находитесь в безвыходном:

var result = fixture.debugElement.query(By.css(".button-area")) 
expect(result === null).toBeTruthy() 

Вы должны ожидать, чтобы исправить это в своем коде, когда проблема будет решена ,

+1

Проверьте это объяснение по проблеме: https://medium.com/@martatatiana/poor-detective-angular2-browser-crash-and-debugelement-f0a651dbf33 Похоже, что в основном ошибка возникает при обходе debugElement, поскольку она имеет огромное дерево зависимостей. Поэтому избегайте использования огромных объектов в аргументе функции ожидания. – robertohuertasm