Как getDOM()
от @angular/platform-browser/src/dom/dom_adapter
действительно работает в спецификациях?Как getDOM() работает в Angular 2 specs
Похоже in some specsgetDOM()
относится к какой-то отдельно стоящий корневой элемент, похожий на AngularJS $rootElement
:
var el1 = el('<div>a</div>');
var el2 = el('<div>b</div>');
getDOM().appendChild(el2, getDOM().firstChild(el1));
expect(getDOM().childNodes(el2).length).toBe(2);
И в комплекте Jasmine matchersgetDOM()
волшебно относится к одному элементу:
function(actual: any /** TODO #???? */, className: any /** TODO #???? */) {
return {
pass: getDOM().hasClass(actual, className) == !isNot,
get message() {
return `Expected ${actual.outerHTML} ${isNot ? 'not ' : ''}
to contain the CSS class "${className}"`;
}
};
};
я собирался для того чтобы построить некоторые утверждения Chai для удобства, но это заставляет меня думать, что я пропускаю что-то важное о том, как Angular 2 ведет себя в модульных тестах.
Что там происходит? Как устанавливается getDOM()
контекст? Что это за контекст? Может ли быть только один контекст во времени? Должно ли getDOM()
использоваться в производственном коде?
Так что я должен игнорировать причины, по которым внутренние помощники ссылаются на него, и просто придерживаться обычного DOM, не так ли? – estus
Точно. Если вы хотите полностью абстрагироваться от DOM (для чего обычно используется «DomAdapter»), вам нужно реализовать пользовательский «Renderer», но пока это не совсем документировано. –
Хорошо, спасибо, я поближе посмотрю на Рендерера. – estus