getDOM()
中的@angular/platform-browser/src/dom/dom_adapter
在规格中实际上如何工作?
看起来in some specs getDOM()
引用了一些分离的根元素,类似于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 matchers
getDOM()
中神奇地指代相同的元素: 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()
? 最佳答案
您不应从依赖项的.../src/...
导入,因为这被认为是该程序包的私有实现。DomAdapter
仅用于Angular2内部。
它已作为公共导出了一段时间,但不久前已从公共API中删除,这就是为什么有几个答案建议使用它的原因。