Wie funktioniert getDOM()
von @angular/platform-browser/src/dom/dom_adapter
tatsächlich funktionieren in Spezifikationen?Wie funktioniertDOM() in Angular 2 Spezifikationen
Es sieht aus wie in some specsgetDOM()
bis zu einem gewissen frei stehendem Wurzelelement bezeichnet, ähnlich wie 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);
Und in gebündelt Jasmine matchersgetDOM()
bezieht sich auf magische Weise auf das gleiche Element:
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}"`;
}
};
};
ich war um aus Gründen der Bequemlichkeit einige Chai-Behauptungen zu erstellen, aber das lässt mich denken, dass ich etwas Wichtiges darüber verpasse, wie sich Angular 2 in Komponententests verhält.
Was ist dort los? Wie wird getDOM()
Kontext festgelegt? Was ist dieser Kontext? Kann es zur Zeit nur einen Kontext geben? Soll getDOM()
im Produktionscode verwendet werden?
Also sollte ich die Gründe ignorieren, warum interne Matcher darauf verweisen und nur bei regulären DOM bleiben, sollte ich nicht? – estus
Genau. Wenn Sie eine vollständige Abstraktion vom DOM wünschen (wozu normalerweise 'DomAdapter' verwendet wird), müssen Sie einen benutzerdefinierten' Renderer' implementieren, aber dies ist noch nicht gut dokumentiert. –
Ok, danke, ich werde Renderer genauer unter die Lupe nehmen. – estus