getDOM()
は@angular/platform-browser/src/dom/dom_adapter
からどうして実際に動作しますか?getDOM()は角度2の仕様でどのように動作するのですか
getDOM()
in some specsように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()
コンテキストが設定されていますか?この文脈は何ですか?ある時点でただ1つの文脈しかありえないのでしょうか?プロダクトコードでgetDOM()
を使用する必要がありますか?
だから、内部のマッチャーがそれを参照して、正規のDOMに固執する理由を無視する必要があります。 – estus
DOMから完全な抽象化( 'DomAdapter'が通常使用されているものです)を望むなら、カスタム'レンダラー(Renderer) 'を実装する必要がありますが、これはまだ十分に文書化されていません。 –
ありがとう、私はレンダラーを詳しく見ていきます。 – estus