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中删除,这就是为什么有几个答案建议使用它的原因。

09-27 18:58